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

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

3
[-t 1]は何をチェックしますか?
私はちょうどWindows上で起動するzshときに起動する方法を見つけましたbash https://www.howtogeek.com/258518/how-to-use-zsh-or-another-shell-in-windows-10/。 最後に次のコードを追加することをお勧めします.bashrc。 # Launch Zsh if [ -t 1 ]; then exec zsh fi どういう[ -t 1 ]意味ですか? それは本当ですか? 次に、これを行うことができますか? exec zsh
13 bash  shell  zsh  test 

3
bashの条件式の-aと-eの違いは何ですか?
からman bash: CONDITIONAL EXPRESSIONS [...] -a file True if file exists. [...] -e file True if file exists. だから、何の違いである[ -a $FILE ]とは、[ -e $FILE ]任意の場合は、? 実際の違いがない場合、同じ目的で2つのフラグが存在するのはなぜですか?
12 bash  shell  test 

3
POSIX shで-nt / -otテストを実行する
ビルトインtestおよび[ユーティリティは、シェルが「POSIXモード」で実行されている場合でも、ほとんどのシェルで-nt(「より新しい」)および-ot(「より古い」)テストを実行します(同じ名前の外部ユーティリティについても当てはまります)。私がアクセスできるシステム)。これらのテストは、2つのファイルの変更タイムスタンプを比較するためのものです。文書化されたセマンティクスは、実装ごとにわずかに異なります(一方または他方のファイルが存在しない場合に発生することに関して)が、POSIX仕様にtestは含まれていません。以下のためのユーティリティ。 test条件付きコマンドが[KornShell]シェルから削除されたとき、testユーティリティの歴史的な実装に組み込まれたユーティリティに含まれていないため、ユーティリティに引き継がれませんでしたsh。 /bin/shシェルスクリプト内のファイル間の変更タイムスタンプを比較し、次に、1つのファイルが他のファイルより新しいかどうかに応じてアクションを実行したいと仮定します。 if [ "$sigfile" -nt "$timestamp" ] || [ "$sigfile.tmp" -nt "$timestamp" ] then return fi ... make(スクリプトの残りの部分は控えめに言っても扱いにくくなる)以外に、他にどのユーティリティを使用できますか?または、「歴史的な実装」でスクリプトを実行shしたり、特定のシェルの作成を辞めたりする人は誰もいないと仮定する必要がありbashますか?
11 files  timestamps  posix  test 

1
`-`で` -a`または `-o`演算子を使用しないでください
StéphaneChazelasが書いた: いくつかのルール 常に変数を引用する -aor -o演算子を使用しないでください(いくつかの[コマンドと&&andおよび||shell演算子を使用します) 作る[POSIXシェルで信頼性の高いです。 なぜ「-aまたは-o演算子を使用しない」のですか? 「いくつかの[コマンドと&&andおよび||shell演算子を使用する」にはどうすればよいですか?
11 bash  shell  test 

3
毎月の最終日をスケジュールします
月の最終日にスクリプトをスケジュールするように指示から読みました。 注: 毎月をカバーするようにdayofmonthの値を設定できないため、鋭い読者は、毎月の最終日にコマンドを実行するように設定する方法について疑問に思うかもしれません。この問題はLinuxおよびUnixのプログラマーを悩ませ、かなりの数の異なるソリューションを生み出しました。一般的な方法は、dateコマンドを使用して明日の日付が01かどうかを確認するif-thenステートメントを追加することです。 00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ; command1 これにより、毎日正午にチェックされ、月の最終日であるかどうかが確認されます。最終日である場合は、cronがコマンドを実行します。 どのように機能し[`date +%d -d tomorrow` = 01 ]ますか? 述べるのは正しいthen; command1ですか?
10 shell-script  cron  date  test 

3
400の権限を持つファイルがrootからは書き込み可能であるのに、ユーザーからは読み取り専用であるのはなぜですか?
非特権ユーザーとしてファイルを作成し、アクセス許可モードをに変更すると400、そのユーザーには正しく読み取り専用として表示されます。 $ touch somefile $ chmod 400 somefile $ [ -w somefile ] && echo rw || echo ro ro すべては順調です。 しかし、その後ルートがやって来ます: # [ -w somefile ] && echo rw || echo ro rw 一体何ですか?確かに、rootは読み取り専用ファイルに書き込むことができますが、それを習慣にするべきではありません。ベストプラクティスでは、書き込み許可ビットをテストできるように指示する傾向があり、そうでない場合は設定されています。理由のためにその方法。 私は両方を理解したいと思い、なぜこれが起こっている、そしてどのように私は得ることができます偽の書き込みビットがセットされていないファイルをテストするときにリターンコードを?

5
曜日に基づいてIf-Elseクエリを使用するにはどうすればよいですか?
問題:今日が木曜日かどうかを確認し、この状態の結果に基づいてさまざまなアクションを実行する必要があります。私は2つの異なるアプローチを試しました: 曜日名の取得: DAYOFWEEK=$(date +"%a") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == "Thu"]; then echo YES else echo NO fi 日番号を取得する: DAYOFWEEK=$(date +"%u") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == 4]; then echo YES else echo NO fi どちらの場合も、出力はYESであるべきですが、NOです。なにが問題ですか?

4
$ 1が1でなくても、 'if [$ 1 =“ 1”]'ブランチが常に選択されるのはなぜですか?
次のような「teleport.sh」という名前のシェルスクリプトがあります。 if [ $1="1" ]; then shift mv "$@" ~/lab/Sun elif [ $1="2" ]; then shift mv "$@" ~/lab/Moon elif [ $1="3" ]; then shift mv "$@" ~/lab/Earth fi 私が実行すると: sh teleport.sh 2 testfile これtestfileは~/lab/Sunディレクトリに移動されますが、そのスクリプトに1または '1'を渡さなかったため、非常に混乱しています。 ここで何が問題になっていますか?
10 bash  shell  test 

2
POSIXテストと-a
私はcheckbashismsで私のスクリプトをチェックし、次の警告を受け取りました: possible bashism in check_ssl_cert line 821 (test -a/-o): if [ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ] ; then ではPOSIX仕様のセクション4.62.4 Iの発見 primary -a primaryバイナリを実行し、プライマリとプライマリの結果を実行します。-a演算子は-o演算子よりも優先されます。 なぜポータブルではない-aと-o考えられますか?


3
bashスクリプトでネットワークを待つ
ネットワークの稼働とネットワーク共有のマウントに依存するスクリプトを実行しています。スクリプトはログイン時に実行されます(起動後に自動的に実行されます)。問題は、スクリプトが実行されるときまでに、通常はまだIPアドレス(DHCP)を持っていないことです。現時点では15秒間スクリプトをスリープ状態にしていますが、何か問題があるかどうかをユーザーに通知できるようにしたいので、この方法はまったく好きではありません。 私の計画は、IPアドレスをまだ持っていないときにループし、持っているときに続行することです。重要なのは、しばらくするとタイムアウトになることです。私が思いついたのはですがif [ ifconfig | grep "192.168.100" ];、何が起こるかは、grepがを消費し、];それが気に入らないことです。それからbashも動揺します、なぜならそれは];どのgrepが食べたかを見つけることができないからです。そして、私はタイムアウトを実装していません。 誰かが変数を保持し、たとえば各反復で1秒間スリープし、この変数を毎回増やすことを提案しました。これが私の完全な(動作しない)スクリプトです(私はbashスクリプトにかなり慣れていません)。 x=0 while [ ifconfig | grep "192.168.100." > /dev/null ]; do echo "no nework" if "$x" -gt 200; then #Time out here exit 1 x=$((x+1)) sleep .1 fi done #continue with rest of script... 正しい方向のポインタがあれば大歓迎です!

3
`[テスト]]、[]、および[オプション]は、`人間テスト `で何を意味しますか?
調べるとman test、私は概要の下でことを見るtest可能性があるtest EXPRESSIONとtest。 [ EXPRESSION ], [ ] and [OPTION以下はどういう意味ですか? 括弧が空で、括弧がないのはなぜ[OPTIONですか?誰かがこれを私のために解釈できますか? NAME test - check file types and compare values SYNOPSIS test EXPRESSION test [ EXPRESSION ] [ ] [ OPTION
8 test 

2
[[$ variable]]と[[-n $ variable]]の違いは何ですか?
bashでは[[ $variable ]]、[[ -n $variable ]]完全に同等ですか?以下の出力から判断するとそうなのかと思われますが、シェルスクリプトでは両方の使用方法が見られます。 $ z="abra" $ [[ $z ]] $ echo $? 0 $ [[ -n $z ]] $ echo $? 0 $ z="" $ [[ $z ]] $ echo $? 1 $ [[ -n $z ]] $ echo $? 1 $ unset z $ [[ $z …
8 bash  shell  test 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.