タグ付けされた質問 「shell-script」

シェルスクリプト、シェルによって解釈される実行可能ファイル(bash、zshなど)に関する質問。

7
コロンビルトインはどのような目的に役立ちますか?
私は多くのシェルスクリプトをハッキングしてきましたが、時には最も単純なことが私を困惑させます。今日、:(コロン)bashビルトインを広範囲に使用するスクリプトに出会いました。 documenationは、単純な十分です。 : (a colon) : [arguments] 引数を展開してリダイレクトを実行する以外は何もしません。戻りステータスはゼロです。 ただし、これはシェル拡張のデモンストレーションで使用されているだけです。私が出会ったスクリプトのユースケースでは、この構造を広範囲に使用しました。 if [ -f ${file} ]; then grep some_string ${file} >> otherfile || : grep other_string ${file} >> otherfile || : fi 実際には何百ものグレープがありましたが、それらは同じものです。上記の単純な構造以外の入出力リダイレクトは存在しません。スクリプトの後半で戻り値はチェックされません。 私はこれを「または何もしない」という意味のない構成として読んでいます。これらの不満を「または何もしない」で終わる目的は何ですか?どのような場合、この構成は|| :、すべてのインスタンスから単純に離脱するのとは異なる結果を引き起こしますか?

7
UNIXシェルスクリプトのファイル拡張子[終了]
ウィキペディアでは、.shの記事は次のように述べています。 .shファイル拡張子タイプについては、Bourne shellを参照してください。 他のUNIXシェルはどうですか? 私は実行中のインタープリターを示すためにファイル内でシバン が使用されていることを知っていますが、私は疑問に思います: ファイル拡張子とファイル拡張子なしの長所と短所は何ですか?

8
シェルスクリプトを実行するさまざまな方法
スクリプトを実行する方法はいくつかありますが、私が知っている方法は次のとおりです。 /path/to/script # using the path (absolute or relative) . script # using the . (dot) source script # using the `source` command これ以上ですか?それらの違いは何ですか?あるものを使用する必要があり、別のものを使用する必要がない状況はありますか?






6
テキストファイルの各行をコマンドの引数として渡す方法は?
.txt引数としてファイル名を受け取り、ファイルを1行ずつ読み取り、各行をコマンドに渡すスクリプトを作成しようとしています。例えば、それが実行されますcommand --option "LINE 1"、その後、command --option "LINE 2"コマンドの出力を別のファイルに書き込まれるなど、。それをどうやってやるの?どこから始めればいいのかわかりません。

1
常に失敗して終了する標準コマンドはありますか?
失敗するコマンドでスクリプトをテストしたい。悪い引数を持つ既存のコマンドを使用できます。また、すぐに失敗して終了する簡単なスクリプトを書くこともできます。これらはどちらも簡単に実行でき、動作しますが、この目的のための標準コマンドがあれば、代わりにそれを使用したいと思います。

3
zshで行の配列を適切に収集する方法
私は次のように出力my_commandを行の配列にグループ化すると思いました: IFS='\n' array_of_lines=$(my_command); その結果は、$array_of_lines[1]出力の最初の行を参照することになるmy_command、$array_of_lines[2]等々第二に、そして。 ただし、上記のコマンドはうまく機能しないようです。で確認したようにmy_command、文字の周りの出力も分割するようです。私もこれをチェックしました:nprint -l $array_of_lines echo $array_of_lines[1] echo $array_of_lines[2] ... 2回目の試みでは、追加するevalことが役立つと考えました: IFS='\n' array_of_lines=$(eval my_command); しかし、それがない場合とまったく同じ結果が得られました。 最後に、zshにスペースがあるList要素に関する回答に続いてIFS、入力を分割して要素を配列に収集する方法をzshに指示する代わりに、パラメーター拡張フラグを使用することも試みました。 array_of_lines=("${(@f)$(my_command)}"); しかし、私はまだ同じ結果を得ました(分割が起こっていますn) これに関して、次の質問があります。 Q1。何で「適切な」行の配列内のコマンドの出力を収集する方法は? Q2。IFS改行のみで分割するように指定するにはどうすればよいですか? Q3。上記の3番目の試み(つまりを使用@f)でパラメータ拡張フラグを使用して分割を指定する場合、zshはIFS?の値を無視しますか?なぜそれが上で機能しなかったのですか?
42 shell-script  zsh 


4
最大のファイルを再帰的に見つける
ディレクトリ内で最大のファイルを再帰的に見つけようとしています。そのディレクトリ内にサブディレクトリがある場合、関数はそのディレクトリ内に移動し、最大のファイルがあるかどうかを確認する必要があります。最大のファイルが見つかると、出力が相対パス名と最大のファイルの名前とサイズとともに表示されます。 例: dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test class/asn dude.h.gch: 9481628 これは私が持っているものです: #!/bin/sh clear recursiveS() { for d in *; do if [ -d $d ]; then (cd $d; echo $(pwd)/$line; du -a; recursiveS;) fi done } recursiveS 私は今しばらくの間立ち往生しています。多数の既存のUnixツールをパイプライン化することでこれを実装することはできません。どんなアイデアでもいいでしょう!


3
コマンドとしての変数; eval vs bash -c
私が作っbashスクリプトの誰かに読んでいたし、私は著者がコマンドとして変数を評価するためにevalを使用していないことに気づいた 著者が使用します bash -c "$1" の代わりに eval "$1" evalを使用することが推奨される方法であり、おそらくいずれにせよ高速であると思います。本当? 2つの間に実際的な違いはありますか?両者の顕著な違いは何ですか?

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