• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIXシェルプログラミング間違い探してくださる方。。。)

UNIXシェルプログラミングの間違いを探す方法

pdragonの回答

  • pdragon
  • ベストアンサー率35% (5/14)
回答No.2

$>chmod +x その.sh

関連するQ&A

  • シェルスクリプト(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 というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。

  • シェルの -eq の動作について

    シェルの -eq の動作について質問があります。 次のプログラムの動作を例に挙げます。 【ファイル名:A.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 666 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A 【ファイル名:B.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 667 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A -Question- A.shがif文に入ってしまう理由を教えてください。 変数Bが二重参照しているような気がするのですが、 そのような機能がshにあるのでしょうか? あと、もう一つ質問があります。 このシェルを古いバージョンで実行すると、  A.sh: line 8: [: A: integer expression exprected というエラーが出てしまいます。 これについても、わかる人がいましたら教えてください。

  • Linuxのbashシェルスクリプトについて教えて下さい。

     Linux, bash超初心者です。  WindowsのAdobe Readerで印刷できないPDFを印刷しようと、Vine Linux上でpdf2psとps2pdfを組み合わせ、以下のようなスクリプトを作ってみました。 [pdfconv.sh] ----- #!/bin/sh if [$1 = ""]; then echo "Usage: ./pdfconv.sh input.pdf [output.pdf]" else file1=$1 file2=${file1%pdf}ps if [$2 != ""]; then file3=$2 else file3=${file1%.pdf}2.ps fi echo $file1' -> '$file3 pdf2ps -r1200x1200 ${file1} ps2pdf $file2 $file3 rm $file2 fi -----  引数が渡されていないとUsageを表示するようにしてみたのですが、引数を渡して $ ./pdfconv.sh test.pdf として実行すると、 ./pdfconv.sh: line 3: [test.pdf: command not found とのエラーが表示されてしまいます。処理自体には問題ないのですが、何だか気持ち悪いです。解決策を教えていただけますでしょうか。よろしくお願いします。

  • シェルの -eq の動作について

    シェルの -eq の動作について質問があります。 次のプログラムの動作を例に挙げます。 【ファイル名:A.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 666 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A XXXXXXX 【ファイル名:B.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 667 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A -Question- A.shを実行すると、処理がif文に入ってしまう理由を教えてください。 変数Bが二重参照しているような気がするのですが、 そのような機能が sh にあるのでしょうか?

  • UNIX

    UNIXの課題をやっていて、ここまで出来たのですが???の部分が 分かりません;誰か教えて頂けると助かります; 時間があれば説明も加えて頂けたら幸いです; #!/bin/bash #ふたつの引数の大小を判断し表示するシェルスクリプト if [ $# -lt 2 ] then echo "引数が足りません" exit fi cmp1=$1 cmp2=$2 if [ $cmp1 -gt $cmp2 ] then echo "$cmp1 ??? $cmp2" elif [ $cmp1 ??? $cmp2 ] then echo "$cmp1 = $cmp2" else echo "$cmp1 ??? $cmp2" fi

  • シェルのif文について

    シェルの書き方で悩んでいます。 A,Bファイルにいずれかが読み取れない場合に、エラーにする if [ -r "A" -a -r "B" ] then else echo "エラー" fi 悩んでるところ→[ -r "A" -a -r "B" ]の否定は、どのようにかくのでしょうか? よろしく御願いします

  • シェルスクリプトの if文について

    if文でずっと悩んでいます。 testIF.shというファイル名で作成したif文を実行したのですが、(kシェル) 「./testIF.sh[3]: testCount: 見つかりません。」 作成したif文は↓です。 ---------------------------------------- let testCount=0 if ( testCount > 0 ) ; then echo "OK!!" fi exit ---------------------------------------- 何がいけないのでしょうか。 まったく分かりません。

  • 【シェル】 count++ をしたい

    if [ $PIN6 == 0 ]; then P6="${SAN}"; else P6="${SHI}" ; `expr $count++` ; fi ; 上のようなシェルスクリプトを書きました。 count++ がうまく作用しません。 これで count=`expr $count +1` と同じ結果を出したいのですが、どうかご享受ください。 環境はLINUX Fedora10 bash です。

  • シェルスクリプトの問題で困っています!

    シェルスクリプトの問題を解いているのですが、いまいち分かっていないところが多いです… X 年からY 年までのカレンダーをファイル(cal-年.txt)に出力するシェルスクリプト(mkcal.sh)を 作成せよ。 実行書式./mkcal.sh x y [必須項目] 1. ファイル作成と同時にメッセージを出力し,作成したファイルが分かるようにすること。 出力例 ./mkcal.sh 2010 2012 Making cal-2010.txt Making cal-2011.txt Making cal-2012.txt 2. 作成しようとしているファイル(cal-XXXX.txt)が既に存在する場合には,エラーメッセージ File exists: cal-XXXX.txt を表示して,ファイルを作成しないこと。 出力例(cal-2011.txt が存在する場合) ./mkcal.sh 2010 2012 Making cal-2010.txt Making cal-2011.txt File exists: cal-2011.txt Making cal-2012.txt [自由項目] 1. mkcal.sh の引数を3 つ与えて実行すると,z 年飛ばしでカレンダーを出力すること。 実行書式./mkcal.sh x y z という問題に対し #!/bin/sh n=$1 while [ $n -le $2 ]; do echo "Making cal-$n.txt" /usr/bin/cal $n > cal-$n.txt n=`expr $n + 1` done #!/bin/sh n=$1 while [ $n –le $2 ]; do echo "Making cal-$n.txt" if [ -f "cal-$n.txt" ]; then echo "File exists: cal-$n.txt" else /usr/bin/cal $n > cal-$n.txt fi n=`expr $n + 1` done #!/bin/sh n=$1 while [ $n –le $2 ]; do echo "Making cal-$n.txt" if [ -f "cal-$n.txt" ]; then echo "File exists: cal-$n.txt" else /usr/bin/cal $n > cal-$n.txt fi n=`expr $n + $3` done とやっているのですが、どこで保存をすればいいか、そもそもの保存をするコマンドが分かっていない、これは合っているのか…と色々と問題点があります 誰か助けてください…お願い致します

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------