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

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

2
シェルスクリプトで些細な文字をエスケープするのはなぜですか?
レガシーシェルスクリプト(Solarisの古いksh88で作成された)を開いたところ、コード全体で次のことが繰り返されていることがわかりました。 [ -f $myfile ] && \rm -f $myfile バックスラッシュのエスケープは、私を奇妙に感じます。 この種の(明らかに役に立たない)エスケープはコード全体で繰り返されるため、意図的に行われていることを知っています。元の著者はいなくなってしまったので、私は彼と連絡を取って彼に尋ねることはできません。 これは単に著者の面白い特異性ですか、それともある時点で意味のある非推奨の良い習慣ですか?それとも、実際に物事を行うための推奨方法であり、私は完全に何かを見逃していますか?


7
サブシェルなしで複数の条件でない場合はbash?
シェルのifステートメントで複数の条件を組み合わせて、組み合わせを否定したい。条件の単純な組み合わせのための次の作業コードがあります。 if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then # do stuff with the files fi これは正常に機能します。無効にする場合は、次の作業コードを使用できます。 if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then echo "Error: You done …


3
このスクリプトは、それ自体の1つのインスタンスのみが実行されていることをどのように確認しますか?
2013年8月19日に、Randal L. Schwartzはこのシェルスクリプトを投稿しました。これは、Linux上で、「[スクリプト]の1つのインスタンスのみが実行され、競合状態やロックファイルのクリーンアップなし」を保証することを目的としています: #!/bin/sh # randal_l_schwartz_001.sh ( if ! flock -n -x 0 then echo "$$ cannot get flock" exit 0 fi echo "$$ start" sleep 10 # for testing. put the real task here echo "$$ end" ) < $0 宣伝どおりに動作するようです: $ ./randal_l_schwartz_001.sh & ./randal_l_schwartz_001.sh [1] 11863 11863 start …

2
ゼロ以外のコードで終了する私の端末のコマンドは、端末ウィンドウを閉じます
最初は「バッシュルーレット」をプレイするように少し面白かったのですが... ゼロ以外のコードで終了する私の端末のコマンドは、端末ウィンドウを閉じます おそらくset -e、端末のソースをどこかにbashスクリプトで設定したと言われました。 .bash_profile/ .bashrc/ .profileを確認しましたset -eが、そこにあるようには見えません。 他に明らかな犯人はいますか?


3
Bashの2つの文字列を比較する
ifbashスクリプトに次のブロックがあります。 if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi に等しいifにもかかわらず、スクリプトの実行がブロックに入りません。私は何を間違えていますか?$PACKAGENAMEkakadu-v6_4-00902C

4
Linuxはシェルスクリプトをどのように処理しますか?
この質問では、bashシェルスクリプトを考えてみましょう。ただし、この質問はすべてのタイプのシェルスクリプトに適用できる必要があります。 誰かがシェルスクリプトを実行すると、Linuxはすべてのスクリプトを一度に(おそらくメモリに)ロードしますか、それともスクリプトコマンドを1つずつ読み込みますか(行ごと)? 言い換えると、シェルスクリプトを実行し、実行が完了する前に削除すると、実行は終了しますか、それともそのまま続行しますか?

1
フォークボムはどのように機能しますか?
警告は、生産マシンでこれを実行しようとしないでください トピックに関するウィキペディアのページを読むとき、私は通常、次のコードで何が起こっているのかを追跡します。 :(){ :|:& };: 説明の抜粋 次のフォーク爆弾は、2002年に芸術として発表されました。56 その正確な起源は不明ですが、2002年より前にUsenetに存在していました。爆弾は、次の13文字をbashやzshなどのUNIXシェルに貼り付けることで実行され ます。「:」という関数を定義して動作します。この関数は、フォアグラウンドで1回、バックグラウンドで1回の2回呼び出されます。 ただし、最後の部分は完全には明確ではありません。関数定義が表示されます: :(){ ... } しかし、他に何が起こっていますか?また、のような他のシェルを行うksh、cshとtcshも似たようなを構築することができるという同じ運命に苦しみますか?
22 bash  shell-script  zsh  fork 

9
検索を使用してファイルを移動するときにディレクトリ構造を保持する
ソースディレクトリから宛先ディレクトリに定義された古いファイルを移動する次のスクリプトを作成しました。完璧に機能しています。 #!/bin/bash echo "Enter Your Source Directory" read soure echo "Enter Your Destination Directory" read destination echo "Enter Days" read days find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \; echo "Files which were $days Days old moved from $soure to $destination" このスクリプトはファイルを大きく移動します。また、ソースサブディレクトリのファイルも移動しますが、サブディレクトリを宛先ディレクトリに作成しません。この追加機能を実装したいと思います。 例付き /home/ketan : source directory …

5
最初にディレクトリでファイルとディレクトリをリストする方法
2つの質問があります。最初に、どのコマンドがファイルとディレクトリをリストしますが、ディレクトリを最初にリストしますか? 2番目の質問:ファイルのリストを1つのディレクトリにコピーしたいのですが、ターゲットディレクトリをコマンドの最初のファイル名にします。


2
bashスクリプトの最後の終了コード
bashスクリプトの最後にある終了コードの意味について混乱しています:終了コード0は正常に終了したことを意味し、終了コード番号(もっと間違えなければ127)があることを知っています。 私の質問は、スクリプトの最後に終了コード0が表示される場合、スクリプトが失敗した場合や別の意味がある場合でも、終了コードを強制的に0に設定することです。

5
デーモンのように起動および停止できるように、シェルスクリプトのサービスを作成するにはどうすればよいですか?
私はCentOS 7を使用していますが、目的は5秒ごとにcronを作成することですが、調査したところ、cronを1分間しか使用できないため、今やっていることはシェルファイルを作成したことです。 hit.sh while sleep 5; do curl http://localhost/test.php; done しかし、右クリックして手動でヒットしました。 私が欲しいのは、そのファイルのサービスを作成して、自動的に開始および停止できるようにすることです。 サービスを作成するスクリプトを見つけました #!/bin/bash # chkconfig: 2345 20 80 # description: Description comes here.... # Source function library. . /etc/init.d/functions start() { # code to start app comes here # example: daemon program_name & } stop() { # code to …

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