タグ付けされた質問 「test」

これは、Unixユーティリティ「test」、または「[」、またはそのシェル構文[[…]]バリアントとして呼び出されるものについてです。ソフトウェアとセットアップのテストに関する質問については、「testing」タグを使用してください。

6
Bash演算子[[vs [vs(vs((?
これらの演算子がbash(括弧、二重括弧、括弧、二重括弧)で使用された場合に異なる動作をすることについて少し混乱しています。 [[ , [ , ( , (( 私は人々がこのようなifステートメントでそれらを使用するのを見てきました: if [[condition]] if [condition] if ((condition)) if (condition)
246 bash  shell  test 

4
二重引用符「[[」内ではなく、単一括弧「[」内ではなく引用符なしのスペースを使用したパラメーター展開が機能するのはなぜですか?
単一または二重の括弧の使用と混同しています。このコードを見てください: dir="/home/mazimi/VirtualBox VMs" if [[ -d ${dir} ]]; then echo "yep" fi 文字列にスペースが含まれていても、完全に機能します。しかし、単一のブラケットに変更すると: dir="/home/mazimi/VirtualBox VMs" if [ -d ${dir} ]; then echo "yep" fi それは言います: ./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected 次のように変更すると: dir="/home/mazimi/VirtualBox VMs" if [ -d "${dir}" ]; then echo "yep" fi 正常に動作します。誰かが何が起こっているのか説明できますか?"${var}"スペースに起因する問題を防ぐために、変数を二重引用符で囲む必要があるのはいつですか?
86 bash  quoting  ksh  test 


3
ファイルがディレクトリへのシンボリックリンクであるかどうかを確認するにはどうすればよいですか?
ファイルが存在し、-Lのシンボリックリンクであるかどうかを確認できます。 for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done また、-dを使用したディレクトリの場合: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; …
64 bash  shell  test 

5
「/ bin / [」はどのように機能しますか?
私はいつもフォルダー/binに[プログラムがあることに驚いています。 これは、次のようなことをしているときに呼び出されるものif [ something ]ですか? [シェルでプログラムを明示的に呼び出すことにより、対応するを要求し]、閉じ括弧を指定すると、括弧の間に何を挿入しても何もしないようです。 言うまでもなく、プログラムに関するヘルプを得ることについて、通常の方法でうまくいかない、つまりどちらman [も[ --help動作します。
50 shell  test 

7
testまたは[または[[はbashシェル間および他のシェル間でより移植性がありますか?
できると思う $ [ -w /home/durrantm ] && echo "writable" writable または $ test -w /home/durrantm && echo "writable" writable または $ [[ -w /home/durrantm ]] && echo "writable" writable 3番目の構文を使用するのが好きです。それらはすべての点で、すべてのネガティブおよびエッジケースで同等ですか?移植性に違いはありますか?たとえば、UbuntuのbashとOS Xまたは古い/新しいbashバージョンの場合、たとえば4.0より前/後で、どちらも式を同じように展開しますか?



6
入力番号が整数かどうかを確認する
入力が整数かどうかを確認しようとしていますが、100回入力を繰り返しましたが、このエラーは表示されません。残念ながら機能しません。すべての入力(数値/文字)のifステートメントをトリガーします read scale if ! [[ "$scale" =~ "^[0-9]+$" ]] then echo "Sorry integers only" fi 引用符をいじりましたが、見逃したか、何もしませんでした。何が間違っていますか?入力が単なる整数かどうかをテストする簡単な方法はありますか?

8
スクリプトを実行するために、パターンに一致するファイルがあるかどうかをテストします
if特定のパターンに一致するファイルがあるかどうかをテストするステートメントを作成しようとしています。ディレクトリにテキストファイルがある場合、指定されたスクリプトを実行する必要があります。 現在の私のコード: if [ -f /*.txt ]; then ./script fi いくつかのアイデアを教えてください。.txtディレクトリ内にある場合にのみスクリプトを実行します。


2
文字列が左括弧の場合のシェルブラケットテストのエラー
シェルが文字列を解析するのを避けるために、文字列を引用することは常に良い習慣であるという事実に自信を持っていました。 それから私はこれに出くわしました: $ x='(' $ [ "$x" = '1' -a "$y" = '1' ] bash: [: `)' expected, found 1 同じエラーを取得して、問題を特定しようとしています: $ [ '(' = '1' -a '1' = '1' ] bash: [: `)' expected, found 1 私はこのような問題を解決しました: [ "$x" = '1' ] && [ "$y" = '1' ] それでも、ここで何が起こっているのかを知る必要があります。
27 shell  test 


5
コマンドをテストして検索する場合、bashを使用するにはどうすればよいですか?
クラッシュログのあるディレクトリがあり、findコマンドに基づいてbashスクリプトで条件文を使用したいと思います。 ログファイルは次の形式で保存されます。 /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 最後の5分間に変更された特定のアプリのクラッシュログがある場合にのみifステートメントがtrueを返すようにします。find私が使用することをコマンドは次のとおりです。 find /var/log/crashes -name app-\*\.log -mmin -5 それをifステートメントに適切に組み込む方法がわかりません。私はこれがうまくいくと思う: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 不明な点がいくつかあります。 私はifフラグを見ましたが、もしあれば、どれを使うべきかわかりません。 testディレクティブが必要ですか、それともfindコマンドの結果に対して直接処理する必要がありますか、それともfind... | wc -l代わりに行カウントを取得するために使用する必要がありますか? この質問に答えるために100%必要というわけではありませんがtest、コマンドが返すリターンコードに対するテストのためですか?そして、それらは目に見えないようなものです- stdout/ stderr?このmanページを読みましたが、いつ使用するtestか、どのようにデバッグするかについてはまだはっきりしていません。

4
bashで始まる:-ltおよび-gt引数
私はbashから始めて、次を見つけました: if test $first -lt $second then echo $first is lower than $second else if test $first -gt $second then echo $first is higher than $second else echo $first and $second are equals fi fi スクリプトを読み取って実行するために、私はそれが何をするかを知っていますが、-ltと-gtが何のためにあるのかはわかりません。 誰かがその種類の「ツール」の名前は何であり、彼ら(-ltと-gt)は何をするのか教えてもらえますか?ありがとう!
24 bash  shell  test 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.