- ベストアンサー
シェルスクリプト(if文)
bashにてシェルスクリプトを作成しています。 XXXX_111122222333_YYYYMMDD 111122222333 といった2パターンのファイル名から、「111122222333」の部分を取得したいのですが、if文の条件式で悩んでいます。 if [ expr length ${p9} -gt 13 ] then a=`echo $p9|cut -c 6-9` b=`echo $p9|cut -c 10-14` c=`echo $p9|cut -c 15-18` else a=`echo $p9|cut -c 1-4` b=`echo $p9|cut -c 5-9` c=`echo $p9|cut -c 10-13` fi これで実行すると too many arguments というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- シェルスクリプトが動作しません
OSはDebian GNU/Linux 3.0です。 set a = `data +%d` set b = `expr $a/7` echo $b は正常に実行した日付を7で割った値が表示されます。 set a = `data +%d` set b = `expr $a/7` echo $b case $a in 1) ls ;; 2) echo $b ;; esac とすると case: too many arguments. と表示されます。分法的にどこがおかしいのでしょうか?
- ベストアンサー
- Linux系OS
- シェルのif文について
シェルの書き方で悩んでいます。 A,Bファイルにいずれかが読み取れない場合に、エラーにする if [ -r "A" -a -r "B" ] then else echo "エラー" fi 悩んでるところ→[ -r "A" -a -r "B" ]の否定は、どのようにかくのでしょうか? よろしく御願いします
- ベストアンサー
- Linux系OS
- シェルスクリプトについての質問です
シェル(bash)で $ a=aa $ b=bb $ c=cc $ d=dd $ e=$a$b_$c$d $ echo $e としたとき出力が aaccdd となりました.自分では aabb_ccddとなることを期待していたのですが,なぜこのようなことになったのでしょうか? また, aabb_ccdd と出力させるにはどの様にすればいいのでしょうか.
- ベストアンサー
- Linux系OS
- 【シェル】 count++ をしたい
if [ $PIN6 == 0 ]; then P6="${SAN}"; else P6="${SHI}" ; `expr $count++` ; fi ; 上のようなシェルスクリプトを書きました。 count++ がうまく作用しません。 これで count=`expr $count +1` と同じ結果を出したいのですが、どうかご享受ください。 環境はLINUX Fedora10 bash です。
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプト間で排他をとりたい
環境 linux(redhat) 使用シェル bash シェルスクリプトAとシェルスクリプトBを作成し、 シェルスクリプトAが動作している間は、シェルスクリプトBの動作を禁止したいと考えています。 例えば、シェルスクリプトAが起動している状態で、シェルスクリプトBが起動されたとき、シェルスクリプトBは、シェルスクリプトAが起動していることを検知して、自発的に処理を終了するようにしたいと考えています。 上記のような仕組みをシェルスクリプトで実現可能でしょうか? 基本的には、シェルスクリプトの先頭で、ある資源のロックを行い、終了時にロックの解放ができれば、その仕組みは実現可能と考えています。 (シェルの異常終了時は、ロックが自動的に解放されることが望ましい) 上記のようなことをシェル(bash)で実現可能でしょうか。 bash単独での方法、もしくはbashからperl,C言語作成の実行モジュールを呼び出す方法でもかまいません。 (ちなみにperl(もしくはC言語作成のモジュール)単独では実現可能なことはわかっています)
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプト(if文)
引数で指定されたファイルがあるばあい、ファイルの末尾5行を表示し、ない場合は「ファイルパス in not found」と表示されるシェルスクリプトを作成したい。 それで偽のときのの実行結果がうまくいきません。 どこを修正すればいいでしょうか? 回答の程宜しくお願い致します。 実行結果 [root@Manabe root]# . filefile /etc/pass tail: /etc/pass: そのようなファイルやディレクトリはありません ソース #!/bin/bash if [ -f$1 ];then tail -5 $1 else echo "$1 in not found" fi
- ベストアンサー
- Linux系OS
- shのシェルスクリプトの演算方法について・・・
bashのシェルスクリプトについてもお聞きしたのですが、 その方法では演算ができない!ということになってしまいました・・・ こういうちょこっとしたところが違うのが嫌です・・・↓ bashの場合は ---------- bash$ a=1 bash$ a=$(( $a + 1 )) bash$ echo $a 2 ---------- となったのですが、shではエラーが出てしまいました・・・ また、shのスクリプトもbashのスクリプトもシェルスクリプトと呼ぶのでしょうか?
- ベストアンサー
- その他(OS)
- linuxシェルスクリプトにつきまして
linuxシェルスクリプトにつきまして 下記のシェルスクリプトがあります。 このうちの、 $num `expr 500 + $num` $num $num の部分がわからず、解説いただきたく、お手数をお掛けしますが、何卒よろしくお願いいたします。 #!/bin/sh num=1 while [ $num -le 100 ]; do printf "user%03d,%d,500,User %03d,/home/user%03d,/bin/bash\n" \ $num `expr 500 + $num` $num $num num=`expr $num + 1` done
- ベストアンサー
- その他(プログラミング・開発)
- if文がうまくできません;;
こんにちわ。 当方、linux初心者です。 今if文を作っているのですが、どうしてもうまくいきません。 ●lsで出力した結果が何行出力されたかによって回答が変わるシェルを作成してください。(10以上と9~3と2以下の3種類) という例題を解答中ですが、下記のとおり作ったのですが 何かアドバイスは頂けませんか? お願い致します。 #!/bin/bash ls -l > case.txt P=`cat case.txt | wc -l` if $P -ge 10 then echo '10以上' elif $P -ge 3 ; then echo '3以上' elif $P -le 2 ; then echo '2以下' fi
- ベストアンサー
- Linux系OS
- Bシェルのif文
if文の否定について教えてください。 if $aa='xxx' then else echo yyy fi 間違っているかもしれませんが上に書いたことをやろうとしています。 他の言語の if(!($aa='xxx'))echo yyy; をBシェルのif文で書くにはどうしたらいいですか? $aa='xxx'を$aa!='xxx'にするのではなくて、その外側のifの書式を教えてください。 最初に書いたコードでは、if(!条件)を知らないので if(条件) else 処理 endif のように書きました。
- 締切済み
- その他(プログラミング・開発)
- LIFEBOOK AH53/D1を購入してから、パソコンの反応が悪くなっています。立ち上がりやアプリ、ネットの開くのが遅く、キーボードの反応も遅いです。さらに、フリーズも頻繁に起きます。ヤマダ電機で見てもらった結果、OSのアップデートが必要と言われ、アップデートと再セットアップを行いましたが、すぐに反応が悪くなりました。容量の問題ではなく、初心者なので富士通のサポートチャットに連絡しましたが、解決しません。対処方法を教えてください。
- LIFEBOOK AH53/D1は購入してからパソコンの反応が非常に悪くなっています。起動が遅く、アプリやネットの開くのも非常に遅いです。キーボードの反応も遅く、フリーズも頻繁に発生します。ヤマダ電機で診てもらった結果、OSのアップデートが必要とのことで、アップデートと再セットアップを行いましたが、すぐに反応が悪くなりました。容量には余裕があり、初心者なので富士通のサポートチャットにも相談してみましたが、解決策が見つかりませんでした。どうすれば解決するでしょうか。
- LIFEBOOK AH53/D1を購入してから、パソコンの反応が非常に悪くなっています。起動が遅く、アプリやネットの開くのも非常に遅いです。キーボードの反応も遅く、頻繁にフリーズします。ヤマダ電機に相談したところ、OSのアップデートが必要とのことで、アップデートと再セットアップを行いましたが、改善されませんでした。容量の問題ではなく、初心者なので富士通のサポートチャットにも連絡しましたが、解決策が見つかりませんでした。どうすれば問題を解決できるでしょうか。
お礼
ご丁寧にありがとうございました。 やはり expr はサポートされていなかったようで、教えていただいた方法で希望通りの処理を行うことが出来ました。 本当にありがとうございました。