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

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

2
「while IFS = read ..」では、なぜIFSは効果がないのですか?
何か間違っているかもしれませんが、IFDを事前実行/完了リストのコマンドの 1つとして設定してもまったく効果がないことは納得できそうです。以下のスクリプトに示されているすべての例で は、外側のIFS(構造の外側while)が優先されます。 何が起きてる?この状況でIFSが何をするかについて間違った考えを持っていますか?配列分割の結果は、「expected」列に示されているとおりであると予想しました。 #!/bin/bash xifs() { echo -n "$(echo -n "$IFS" | xxd -p)"; } # allow for null $IFS show() { x=($1) echo -ne " (${#x[@]})\t |" for ((j=0;j<${#x[@]};j++)); do echo -n "${x[j]}|" done echo -ne "\t" xifs "$IFS"; echo } data="a b c" echo -e "----- -- …

4
彼らはどのようにしてマウスの前にUnixコンピューターを運転し、コピー&ペーストしましたか?
Unixは40歳であるため、Unixはコンピュータマウスの発明よりも古いです。(実際、Unixが1969年から、マウスが1972年からだった場合、わずか3年です。)新規ユーザーは、コピー&ペーストをせずに、Unixでどのようにしたのですか?彼らは常にコピー/貼り付け機能付きのテキストエディターを持っていましたが、Linuxで行うことはすべてWebブラウザーからコピーし、(CLIPBOARDから)vimまたはgeditまたはgnome端末に貼り付けることです。あなたは同じですよね? manファイルをvimにロードし、そのファイルから一時バッファーにコードをコピーして貼り付け、bashにそのバッファーを実行させることは想像できません。たぶん、彼らは決してemacsを残しませんでした。それが答えですか?

5
「which」のないパスでファイルを見つけますか?
私は(何らかの形で)スクリプトを実行できます: $ assemble.sh file ... [output] しかしwhich、それを見つけることができません: $ which assemble.sh which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:. これはどのように可能ですか? このファイルの場所を見つけるにはどうすればよいですか? 私はbashを使用しています。
12 bash  shell  path 

3
cronからshスクリプトを実行する
test.shスクリプトがあります #!/bin/sh php /home/v/file.php sh /root/x/some.sh コマンドラインからルートとしてファイルを実行すると動作します。 sh /home/v/test.sh crontab -e(ルートcron)に設定すると、機能しません * * * * * sh /home/v/test.sh 何が間違っていますか?ありがとう
12 shell  cron 

7
シェルスクリプトを学習する実用的なタスク[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 UnixおよびLinux Stack Exchangeで話題になるようにします。 9か月前に閉鎖されました。 UNIXシステム管理における一般的な問題と、シェルスクリプトがそれらを解決する方法を探しています。完全に独学目的のため。また、シェルスクリプトを学習する方法を教えてください。


3
あまり人気のないシェルはどれですか?また、その利点は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 (おそらく?)より人気のあるシェル(bash、csh、Korn、zsh)を呼び出すことができるものとは別に、他に知っているものや使用しているもの、およびそれらに備わっている独自の機能は何ですか? ps-有意義な調査を収集するには、シェルごとに1つの回答が理想的です
12 shell 


6
stdinまたはファイルをバッファリングできるプログラム
一時ファイルを使用する以外に、プログラムが入力をバッファリングできる方法stdinがありますが、を取得するまでコンテンツを出力しませんEOF。シェル変数も使用したくありません(例:)buffer=$(cat)。 このプログラムは次のように動作するはずです(プログラム名はであると想定buffered-cat): $ buffered-cat line 1 line 2 line 3 ^D # Ctr-D here(End of Line) プログラムが受け取った^Dので、buffered-cat出力は内容を出力します line 1 line 2 line 3
12 shell  stdout  buffer 

2
set -uの使用が期待どおりに機能しない
setスクリプトでさまざまなオプションを効率的に使用する方法を学習してset -uいて、変数が正しく設定されていない場合(ユーザーの削除など)にスクリプトを終了するのに最適なようです。マニュアルページによると、次のことset -uをset -eしています... -e Exit immediately if a command exits with a non-zero status. -u Treat unset variables as an error when substituting. この機能をテストするためのテストスクリプトを作成しましたが、期待どおりに動作していないようです。おそらく、誰かが私の問題を私に説明し、どこで私が誤解しているのでしょうか?テストスクリプトは次のとおりです。ありがとうございました。 set -e set -u testing="This works" echo $? echo ${testing} testing2= echo $? echo ${testing2} testing3="This should not appear" echo $? echo ${testing3} スクリプトが0と"これで機能します"を表示し、${testing2}設定されていないため失敗することを期待しています。 代わりに私が表示されています0をし、「この作品は」、で続く0、その後、0は …

1
「待機&」(「待機アンパサンド」)は、便利な(bash)シェル/シェルスクリプトのイディオムまたはテクニックですか?
GNU「bash」シェルを実行しているLinuxマシン用のシェルスクリプトを「継承」しました。1つの特定のケースでは、マシンはGNU bashバージョン2.0.5bを実行します これらのスクリプトの1つにはwait &、forループの「for line」の一部として(「アンパサンドを待つ」)命令があります。一見すると、それは奇妙な/興味深いイディオムのようですが、私のWeb検索で関連性のあるものは何も返されませんでした。man waitは、「BASH_BUILTINS」(「BASH BUILTINS COMMAND」)のマンページを示しています。 wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If n is not given, …

2
「エクスポート」コマンドの用途は何ですか?
1つのターミナルウィンドウで環境変数を作成し、それを別のターミナルウィンドウにエコーしようとしました。それは何も表示しませんでした。 $TEST=hello その後、私はそれをエクスポートechoし、別のターミナルウィンドウでもう一度試しました。結果は以前と同じでした。 export TEST しかし、ログイン時に同じコードを実行すると(コードを~/.profileファイルに追加)、変数は任意のターミナルウィンドウで使用できます。ここで何が起きてるの?端末でコードを実行することと、ログイン時に同じコードを実行することの違いは何ですか?



3
コマンドエラーでbashスクリプトの関数を自動実行する方法はありますか?
私は一連のコマンドを実行する必要があるシェルスクリプトを書いており、すべてのコマンドは以前のすべてのコマンドに依存しています。コマンドが失敗した場合、スクリプト全体が失敗し、exit関数を呼び出します。各コマンドの終了コードを確認することはできましたが、有効にできるモードがあるかどうか、またはbashに自動的にそれを実行させる方法があるかどうか疑問に思っています。 たとえば、次のコマンドを実行します。 cd foo || myfunc rm a || myfunc cd bar || myfunc rm b || myfunc これらのコマンドのいずれかが失敗した場合にmyfuncを呼び出す必要があることを、これらのコマンドを実行する前に何らかの方法でシェルに通知できる方法はありますか? cd foo rm a cd bar rm b

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