[過去ログ] シェルスクリプト総合 その31 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
892(1): デフォルトの名無しさん [sage] 2019/10/17(木) 16:55:00.31 ID:PM8kIYTO(1/6) AAS
if ls "*.txt" > /dev/null 2>&1
then
echo "OK"
else
echo "NG"
fi
まったくうまくいかない
なぜ単なるファイルの存在確認だけにこんな苦労するのか
896(2): デフォルトの名無しさん [sage] 2019/10/17(木) 17:08:50.43 ID:PM8kIYTO(2/6) AAS
>>893ところがワイルドカード使うと途端に何も引っかからなくなる
897(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:09:26.66 ID:PM8kIYTO(3/6) AAS
>>895そうです
900: デフォルトの名無しさん [sage] 2019/10/17(木) 17:12:52.81 ID:PM8kIYTO(4/6) AAS
>>894,899894(2): デフォルトの名無しさん [sage] 2019/10/17(木) 17:05:16.55 ID:e7ZwLQTq(1/2) AAS
# # ls *txt && echo ok || echo bad
ls: '*txt' にアクセスできません: No such file or directory
bad
# # touch foo.txt
# # ls *txt && echo ok || echo bad
foo.txt
ok
こんな要領か?
899(2): デフォルトの名無しさん [sage] 2019/10/17(木) 17:10:16.84 ID:e7ZwLQTq(2/2) AAS
普通のプログラミング言語と違って
シェルスクリプトはブーリアンの分岐は可能なら
if else 使うよりも && || が見やすく良いと思う
いけた
分岐後の処理も大したことしないしこれでやってみようと思うd
905(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:26:43.45 ID:PM8kIYTO(5/6) AAS
今度は ls "$dir/tmp/*.txt"
みたいなことしたらアクセスできませんみたいなことを言われた
>>901901(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:13:24.29 ID:z1/RyPhF(4/10) AAS
>>896
アスタリスクを使うと、シェルが解釈して、
例えば、 ls * だと、 ls file1 file2 file3 file4 って実行したのと同じことになるんだぞ。
lsコマンドの中からはアスタリスクが使われてるかどうかなんてわからない。
そしてダブルクォートで括ると、lsコマンドの中から引数は "*" という文字列が渡されたようになるんだよ。
なるほど
>>902多分"*.txt"ファイルにアクセスしようとしてできないって言われたことが原因?
でもなぜかls *.txtみたいに、ファイル直だとイケる
910: デフォルトの名無しさん [sage] 2019/10/17(木) 17:47:11.17 ID:PM8kIYTO(6/6) AAS
>>907907(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:37:12.84 ID:z1/RyPhF(8/10) AAS
>>905
だからダブルクォートで括るからいかんのや
ls "$dir/tmp/" * ".txt"
これが正解(スペースは目立たせるために入れただけ)
この書き方ダサいよなw
ちなみに古いシェル(poshだっけ?)でこれがうまく行かない
バグがあるのだが、まあ誰も気にしないわなw
うおおできた!
ls "$dir/tmp/"*".txt" && echo "ok" || echo "ng"
みたいな感じにした
(txtファイルがひとつもないときエラー出るけど!無視)
d
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s