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

Bashコマンドシェル用に記述されたスクリプトに関する質問。エラー/構文エラーのあるシェルスクリプトについては、ここに投稿する前に、shellcheckプログラム(またはhttps://shellcheck.netのWeb shellcheckサーバー)で確認してください。Bashのインタラクティブな使用に関する質問は、スタックオーバーフローよりもスーパーユーザーで話題になる可能性が高くなります。


7
REエラー:Mac OS Xでの不正なバイトシーケンス
iOSへのクロスコンパイルのためにMac OS X上のMakefile内の文字列を置き換えようとしています。文字列には二重引用符が埋め込まれています。コマンドは次のとおりです。 sed -i "" 's|"iphoneos-cross","llvm-gcc:-O3|"iphoneos-cross","clang:-Os|g' Configure そしてエラーは: sed: RE error: illegal byte sequence 二重引用符、コンマ、ダッシュ、コロンをエスケープしてみました。例えば: sed -i "" 's|\"iphoneos-cross\"\,\"llvm-gcc\:\-O3|\"iphoneos-cross\"\,\"clang\:\-Os|g' Configure 私は問題をデバッグする時間をたっぷりと持っています。誰かがsed不正なバイトシーケンスの位置を印刷する方法を知っていますか?または、誰かが違法なバイトシーケンスを知っていますか?
184 regex  macos  bash  sed 

6
配列のループ、インデックスと値の両方の出力
私はこのようなことをしたいです: foo=( ) foo[0]="bar" foo[35]="baz" for((i=0;i<${#foo[@]};i++)) do echo "$i: ${foo[$i]}" done # Output: # 0: bar # 1: 次に、for inを使用してそれをループしようとしました: foo=( ) foo[0]="bar" foo[35]="baz" for i in ${foo[@]} do echo "?: $i" done # Output: # ?: bar # ?: naz しかし、ここではインデックス値がわかりません。 私はあなたが次のようなことができることを知っています foo=( ) foo[0]="bar" foo[35]="baz" declare -p foo …
184 bash 

14
URLからbashスクリプトを実行する
スクリプトが含まれているURL "http://mywebsite.com/myscript.txt"にファイルがあるとします。 #!/bin/bash echo "Hello, world!" read -p "What is your name? " name echo "Hello, ${name}!" そして、最初にファイルに保存せずにこのスクリプトを実行したいと思います。どうすればよいですか? 今、私は構文を見てきました: bash < <(curl -s http://mywebsite.com/myscript.txt) しかし、これをファイルに保存して実行した場合のようには動作しません。たとえば、readlineは機能せず、出力は次のようになります。 $ bash < <(curl -s http://mywebsite.com/myscript.txt) Hello, world! 同様に、私は試しました: curl -s http://mywebsite.com/myscript.txt | bash -s -- 同じ結果。 もともと私は次のような解決策を持っていました: timestamp=`date +%Y%m%d%H%M%S` curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp …
184 linux  bash  curl 


13
端末を終了せずにbashスクリプトを終了する方法
exitシェルスクリプトでコマンドを使用すると、スクリプトによってターミナル(プロンプト)が終了します。スクリプトを終了してターミナルにとどまる方法はありますか? 私のスクリプトrun.shは、直接ソースされるか、別のスクリプトからソースされることによって実行されることが期待されています。 EDIT:具体的には、2つのスクリプトがあるrun2.shとしては、 ... . run.sh echo "place A" ... そして、run.shなど ... exit ... 私がそれを実行したとき. run2.sh、それがでexitコードラインにヒットした場合run.shは、ターミナルに停止してそこに留まるようにします。しかし、を使用するexitと、ターミナル全体が閉じられます。 PS:を使用しようとしましたreturnが、echoコードラインはまだ実行されます...
183 linux  bash 



7
#で始まるすべての行をファイルから削除します
ファイル内のコメントを含むすべての行は、で始まります#。で始まるすべての行(およびそれらの行のみ)を削除するにはどうすればよい#ですか?行#の先頭ではなくを含む他の行は無視する必要があります。
182 bash  sed 


6
Bashで長さがゼロでない文字列をテストします:[-n“ $ var”]または[“ $ var”]
Bashスクリプトが長さ0以外の文字列を2つの異なる方法でテストするのを見てきました。ほとんどのスクリプトは-nオプションを使用します: #!/bin/bash # With the -n option if [ -n "$var" ]; then # Do something when var is non-zero length fi ただし、-nオプションは実際には必要ありません。 # Without the -n option if [ "$var" ]; then # Do something when var is non-zero length fi どちらが良い方法ですか? 同様に、これは長さゼロをテストするためのより良い方法です: if [ -z "$var" ]; then …

18
変数に標準エラーを格納する方法
次のようなスクリプトがあるとします。 役に立たない echo "This Is Error" 1>&2 echo "This Is Output" そして、私は別のシェルスクリプトを持っています: alsoUseless.sh ./useless.sh | sed 's/Output/Useless/' 「This Is Error」または他のstderrをuseless.shから変数にキャプチャしたい。ERRORと呼びましょう。 何かにstdoutを使用していることに注意してください。stdoutを使い続けたいので、この場合、stderrをstdoutにリダイレクトしても役に立ちません。 なので基本的には ./useless.sh 2> $ERROR | ... しかし、それは明らかに機能しません。 私もできることを知っています ./useless.sh 2> /tmp/Error ERROR=`cat /tmp/Error` しかし、それは醜く不必要です。 残念ながら、ここで答えが見つからない場合、それが私がしなければならないことです。 別の方法があるといいのですが。 誰か良いアイデアはありますか?


16
ホームディレクトリの代わりに他のディレクトリにデフォルト設定する方法
OverаэтотвопросестьответынаStack Overflowнарусском:Git Bashизменитьдомашнийкаталог 私はWindowsマシンで開発しています。Linuxコマンドラインに必要な唯一の場所はGit Bashです。問題は次のとおりです。それを開くと、ホームディレクトリにいます。次のように、ディレクトリをワークスペースに変更する必要があります。 cd ../../../d/work_space_for_my_company/project/code_source これを.shファイルにラップして、手動で入力する必要がなくなるようにできますか?これは単純なはずですが、Linuxコマンドラインについてはまったく知識がありません。その.shファイルの作成方法を順を追ってご説明いただければ幸いです。
180 bash  shell  git-bash 


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