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

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

5
bashシェルスクリプトでの実行とソースの区別
私がここで求めているのは、非常に非正統的/型破り/危険であるか、または、Google-fuのスキルがちょうどいいものではありません... でbashシェルスクリプト、それは別のシェルスクリプトによってソース取得された場合に伝えるの方法のいずれかの簡単な存在である、またはそれ自体で実行されていますか?つまり、次の2つの動作を区別することはできますか? # from another shell script source myScript.sh # from command prompt, or another shell script ./myScript.sh 私が考えているのはbash、ソース化されたときに利用できる機能を含むユーティリティのようなシェルスクリプトを作成することです。ただし、このスクリプトが単独で実行されている場合は、定義された関数にも基づいて特定の操作を実行するようにします。このシェルスクリプトが取得できる環境変数のようなものはありますか、例えば some_function() { # ... } if [ -z "$IS_SOURCED" ]; then some_function; fi できれば、フラグ変数を設定するために呼び出し元スクリプトを必要としないソリューションを探しています。 編集:スクリプトのソースと実行の違い、使用されているスクリプトの違い(両方の方法で)を伝えることができるかどうかをここで見つけようとしていることを知っています。

3
シェルスクリプトでの大文字と小文字を区別しない部分文字列検索[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 5年前に閉鎖されました。 コマンド出力の大文字と小文字を区別しない部分文字列一致を行うシェルスクリプトを作成するにはどうすればよいですか?

2
このシェルスクリプトにバックスラッシュが含まれているのはなぜですか?
conda.shスクリプトのコピーには、次の行があります。 if [ -n "${_CE_CONDA}" ] && [ -n "${WINDIR+x}" ]; then SYSP=$(\dirname "${CONDA_EXE}") else SYSP=$(\dirname "${CONDA_EXE}") SYSP=$(\dirname "${SYSP}") fi 私は前にバックスラッシュがある理由として好奇心dでdirname。私はそれが必要だとは思わない。このバックスラッシュの使用は、ソースファイルの他の場所にも現れます。これを行う理由がありませんか?


2
ターゲットアプリケーションのゼロ番目の引数を設定するPOSIXの方法はありますか?
でbash使用exec -aするzshことができ、代わりにARGV0特定のゼロ引数でプログラムを実行するように設定することもできますが、POSIXの方法もありますか? この1つのコメントで示唆されているように、これを達成するための(一時的な)シンボリックリンクを作成できますが、この方法では、新しいゼロ番目の引数値を真に任意の値、たとえば特定の絶対パスを持つコマンドに設定できませんでした。他の解決策はありますか?

2
ハードリンクは通常のファイルとしてカウントされますか?
これを登録する方法があるかどうか疑問に思っていましたが、ほとんどの最新の検索エンジンは約5語以上の長さのフレーズではうまく機能しないので、これについてはいくらか助けが必要です。 ファイルを特定のタイプとして登録し、それに応じて決定を下す必要があるbashスクリプトを作成しているので、私はこれを疑問に思っていました。これは技術的には私のプロジェクトにとって重要ではありませんが、興味がありました。 また、それらが通常のファイルと見なされる場合、これらのファイルが解析せずにハードリンクされているかどうかを確認する方法はありますls -iか?find -iコマンドを使用せずに、任意のファイルXが他の任意のファイルYにハードリンクされているかどうかを確認する方法はありますか?

1
バックグラウンドプロセスが終了するまで関数が戻らないのはなぜですか?
次のスクリプトを検討してください。 #!/bin/bash function start { leafpad & echo $! } PID=$(start) echo "PID is $PID" このスクリプトは、バックグラウンドプロセスであっても、リーフパッドプロセスが終了するまで閉じかっこを通過し続けません。 どうしてこれなの?関数からバックグラウンドプロセスを起動することはできますか?


3
エラーが発生したときにBashで行番号を見つけるにはどうすればよいですか?
エラーが発生したBashの行番号をどのように見つけますか? 例 必要なものを説明するために、行番号を使用して次の簡単なスクリプトを作成します。スクリプトはファイルをコピーします cp $file1 $file2 cp $file3 $file4 cpコマンドの1つが失敗すると、関数はexit 1で終了します。エラーを行番号(たとえば、8または12)とともに出力する機能を関数に追加したいと思います。 これは可能ですか? サンプルスクリプト 1 #!/bin/bash 2 3 4 function in_case_fail { 5 [[ $1 -ne 0 ]] && echo "fail on $2" && exit 1 6 } 7 8 cp $file1 $file2 9 in_case_fail $? "cp $file1 $file2" 10 11 …

3
引用符で囲まれた変数が空の場合、どうすれば何も展開できませんか?
スクリプトを実行しているとします: some-command "$var1" "$var2" ... そして、var1空のイベントでは、空の文字列の代わりに何も置き換えないで、実行されるコマンドが次のようになるようにします。 some-command "$var2" ... ではなく: some-command '' "$var2" ... 変数をテストして条件付きで含めるよりも簡単な方法はありますか? if [ -n "$1" ]; then some-command "$var1" "$var2" ... # or some variant using arrays to build the command # args+=("$var1") else some-command "$var2" ... fi bash、zshなどで何にも拡張できないパラメーター置換はありますか?残りの引数でグロビングを使用したい場合があるので、それを無効にして変数の引用符を外すことはオプションではありません。

3
inotifywaitを使用して、特定の拡張子のファイルが作成されるディレクトリを監視する方法
私はこの答えを見ました。 例として、inotifywaitの使用を検討する必要があります。 inotifywait -m /path -e create -e moved_to | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'" # do something with the file done 私の質問は、上記のスクリプトは任意のタイプのファイルの作成のためにディレクトリを監視しinotifywaitますが、特定のタイプ/拡張子のファイルが作成された(またはディレクトリに移動された)ときにのみレポートするようにコマンドを変更するにはどうすればよいですか?.xmlファイルが作成されたときにレポートします。 私が試したもの: inotifywait --helpコマンドを実行し、コマンドラインオプションを読みました。それは持っている--exclude <pattern>と--excludei <pattern>するコマンドEXCLUDE(正規表現を使用して)特定の種類のファイルを、私はする方法が必要ですちょうどINCLUDE特定のタイプ/拡張子のファイルを。

8
grepとcut inスクリプトを使用してHTMLファイルからWebサイトのURLを取得する方法
grepとcutを使用して、HTMLファイルからURLを抽出しようとしています。リンクは次のようになります。 <a href="http://examplewebsite.com/"> 他のウェブサイトには.netありますが、.gov直前にカットオフポイントを作ることができると思い>ます。だから私は、grepを使用して、httpの前と.comの後にすべてをカットすることができることを知っていますが、私はしばらくの間それで立ち往生しています。

13
ファイルからすべてのコメントを削除するにはどうすればよいですか?
コメント付きのファイルがあります: foo bar stuff #Do not show this... morestuff evenmorestuff#Or this コメントされていないコードをすべて印刷したいだけです。 foo bar stuff morestuff evenmorestuff ファイルからコメントを取り除くことができることはとても重要です...それを行う良い方法は何ですか?

6
最初のxファイルを移動する方法
数千の無秩序なファイルがあるこの巨大なフォルダーがあります。mvコマンドを使用して最初の5000をサブフォルダーに移動することは可能ですか?今のところ私はファイルを mv *some_pattern* ./subfolder1/ 今のところ、画像を非常にランダムに移動していますが、各サブフォルダーに正確に5000個のファイルがない場合、それはそれほど重要ではありません。それを行うためのより良い方法はありますか?


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