- Community Home
- >
- HPE Community, Japan
- >
- HP-UX
- >
- System Management
- >
- letコマンドによる計算について
system management
1748246
メンバー
3718
オンライン
108760
解決策
フォーラム
カテゴリ
Company
Local Language
戻る
フォーラム
ディスカッションボード
フォーラム
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
ディスカッションボード
ディスカッションボード
ディスカッションボード
フォーラム
ディスカッションボード
戻る
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
ブログ
情報
コミュニティ言語
言語
フォーラム
ブログ
トピックオプション
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-03-2007 12:59 PM
08-03-2007 12:59 PM
letコマンドによる計算について
いつも参考にさせていただいております。
現在シェルスクリプトにて日付を変数に代入し、
そこから月の数値を取り出して
さらにletコマンドによって2ヶ月前の月にするといったことを行ってます。
しかし、今月に入ってからスクリプトがうまく行かず、
調べた結果letコマンドで数値08に対して計算が出来ないことがわかりました。
webなどで原因を調査しましたが特に見つけることが出来ませんでした。
原因を知っている方がいらっしゃれば、是非お教え願えますでしょうか?
以下にスクリプトの抜粋を載せておきます。
説明不足な点やご不明な点があれば遠慮なくおっしゃってください。
よろしくお願いいたします。
↓↓↓スクリプト抜粋↓↓↓
DATE=`date +%Y%m%d%H%M%S`
MM=`echo $DATE|cut -c5-6`
let MM=MM-2 ←右辺のMMが8月(08)、と9月(09)で失敗する
現在シェルスクリプトにて日付を変数に代入し、
そこから月の数値を取り出して
さらにletコマンドによって2ヶ月前の月にするといったことを行ってます。
しかし、今月に入ってからスクリプトがうまく行かず、
調べた結果letコマンドで数値08に対して計算が出来ないことがわかりました。
webなどで原因を調査しましたが特に見つけることが出来ませんでした。
原因を知っている方がいらっしゃれば、是非お教え願えますでしょうか?
以下にスクリプトの抜粋を載せておきます。
説明不足な点やご不明な点があれば遠慮なくおっしゃってください。
よろしくお願いいたします。
↓↓↓スクリプト抜粋↓↓↓
DATE=`date +%Y%m%d%H%M%S`
MM=`echo $DATE|cut -c5-6`
let MM=MM-2 ←右辺のMMが8月(08)、と9月(09)で失敗する
3件の返信3
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-03-2007 01:28 PM
08-03-2007 01:28 PM
letコマンドによる計算について
推測ですがletコマンドでは、数字の前に0(ゼロ)を付けると8進数と理解して計算していると思います。
よって8進数の08は存在しないため、エラーになっているんじゃないですかね。
DosのSETコマンドでも同じ現象でエラーが出て苦労したのを覚えています。
対策としてletコマンドではなく、exprコマンドを使用してみてはどうですか?
MM=`expr ${MM} - 2`
よって8進数の08は存在しないため、エラーになっているんじゃないですかね。
DosのSETコマンドでも同じ現象でエラーが出て苦労したのを覚えています。
対策としてletコマンドではなく、exprコマンドを使用してみてはどうですか?
MM=`expr ${MM} - 2`
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-03-2007 01:45 PM
08-03-2007 01:45 PM
letコマンドによる計算について
super32xさん、早速のご回答誠にありがとうございます。
はい、exprを使用すると確かに実行できました。
今後はexprを使用しようと思います。
しかし、letによる計算は実は数年前から行ってました。
もちろん、去年の8月や9月も行っており当時は問題なく実行されてきました。
今年(今月)に入りなぜか出来なくってしまったのです。これらを今後は調査していこうと思います。
どうもありがとうございました。
はい、exprを使用すると確かに実行できました。
今後はexprを使用しようと思います。
しかし、letによる計算は実は数年前から行ってました。
もちろん、去年の8月や9月も行っており当時は問題なく実行されてきました。
今年(今月)に入りなぜか出来なくってしまったのです。これらを今後は調査していこうと思います。
どうもありがとうございました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-08-2007 02:43 PM
08-08-2007 02:43 PM
letコマンドによる計算について
以下のように変数の前に、その内容が10進数であるという基数を指定すると、letでも大丈夫です。
$ MM=08
$ echo $MM
08
$ let MM=MM-2
sh: 08: The specified number is not valid for this command.
$ echo $MM
08
$ let MM=10#${MM}-2
$ echo $MM
6
SHELLのパッチがインストールされて動作が変わったのかも知れませんね。
$ MM=08
$ echo $MM
08
$ let MM=MM-2
sh: 08: The specified number is not valid for this command.
$ echo $MM
08
$ let MM=10#${MM}-2
$ echo $MM
6
SHELLのパッチがインストールされて動作が変わったのかも知れませんね。
上記の意見は、Hewlett Packard Enterpriseではなく、著者の個人的な意見です。 このサイトを使用することで、利用規約と参加規約に同意したことになります 。
© Copyright 2024 Hewlett Packard Enterprise Development LP