[過去ログ] シェルスクリプト総合 その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
893(2): デフォルトの名無しさん [sage] 2019/10/17(木) 17:04:24.98 ID:z1/RyPhF(1/10) AAS
ファイルの存在確認なら、-fを使えばいいだろ?
ところがワイルドカード使うと途端に何も引っかからなくなる
897
(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:09:26.66 ID:PM8kIYTO(3/6) AAS
>>895
895(2): デフォルトの名無しさん [sage] 2019/10/17(木) 17:05:47.88 ID:z1/RyPhF(2/10) AAS
あ、ディレクトリに *.txt があるかどうかってことか?
そうです
900: デフォルトの名無しさん [sage] 2019/10/17(木) 17:12:52.81 ID:PM8kIYTO(4/6) AAS
>>894,899
894(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"
みたいなことしたらアクセスできませんみたいなことを言われた

>>901
901(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
902(1): デフォルトの名無しさん [sage] 2019/10/17(木) 17:14:21.91 ID:ieavKq01(1) AAS
うまくいかなかった原因分かった?
多分"*.txt"ファイルにアクセスしようとしてできないって言われたことが原因?
でもなぜかls *.txtみたいに、ファイル直だとイケる
910: デフォルトの名無しさん [sage] 2019/10/17(木) 17:47:11.17 ID:PM8kIYTO(6/6) AAS
>>907
907(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