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

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

2
sudo:./script.shを実行できません:そのようなファイルまたはディレクトリはありません
私は困惑しています。/homeディレクトリに実行可能なスクリプトがあります: [user@server ~]$ ll total 4 -rwx------ 1 user user 2608 Jul 15 18:23 qa.sh しかし、それを実行しようとすると、sudo見つかりませんと言われます: [user@server ~]$ sudo ./qa.sh [sudo] password for user: sudo: unable to execute ./qa.sh: No such file or directory これは新規ビルドです。問題を引き起こすような変更は行われていません。実際、スクリプトのポイントは、ポリシーに従って実際に構築されるようにすることです。多分それはそうではなくsudo、ビルド中に実際に壊れていますか? またsudo、他のディレクトリで他のコマンドを使用して実行できることにも注意してください。 編集:スクリプト(私はそれを書いていないので/bin/bash、私にそれを書かないでください;)) #! /bin/bash . /root/.bash_profile customer=$1 if [ -z "$customer" ]; then echo "Customer …



5
whileループを使用して2つの入力ファイルから読み取る方法
入れ子になったwhileループ内の2つの入力ファイルから1行ずつ読み取る方法があるかどうかを知りたかった。たとえば、2つのファイルFileAとがあるとしFileBます。 FileA: [jaypal:~/Temp] cat filea this is File A line1 this is File A line2 this is File A line3 FileB: [jaypal:~/Temp] cat fileb this is File B line1 this is File B line2 this is File B line3 現在のサンプルスクリプト: [jaypal:~/Temp] cat read.sh #!/bin/bash while read lineA do echo $lineA …

3
bashスクリプトを使用して文字列+数値と結合した文字列をソートするにはどうすればよいですか?
これは、ソートしたいデータです。しかしsort、数値を文字列に処理し、データは期待どおりにソートされません。 / home / files / profile1 / home / files / profile10 / home / files / profile11 / home / files / profile12 / home / files / profile14 / home / files / profile15 / home / files / profile16 / home / files / profile2 / …

1
「bash <file>」が機能する場合、「source <file>」がエラーをスローするのはなぜですか?
次のスクリプトがあります。 #!/bin/bash set -x if :; then echo a fi 実行するとbash /tmp/file、aエコーされますがsource /tmp/file、実行すると、次のようになります: bash: /tmp/test: line 6: syntax error: unexpected end of file 出力: knezi@holly tmp]$set -x; source /tmp/test; set +x + source /tmp/test ++ set -x bash: /tmp/test: line 6: syntax error: unexpected end of file + set +x …

8
配管、シフト、またはパラメーター拡張はより効率的ですか?
私は単語のスペース区切りリストで互いに離れた一定数の値である特定の値を反復処理する最も効率的な方法を見つけようとしています(配列を使用したくない)。例えば、 list="1 ant bat 5 cat dingo 6 emu fish 9 gecko hare 15 i j" したがって、リストを繰り返し処理し、1、5、6、9、および15のみにアクセスできるようにしたいのです。 編集:リストから取得しようとしている値は、リストの残りの部分と形式が異なる必要がないことを明確にすべきでした。それらを特別なものにしているのは、リスト内の位置だけです(この場合、位置1,4,7 ...)。リストはそうかもしれません1 2 3 5 9 8 6 90 84 9 3 2 15 75 55が、私はまだ同じ数字が欲しいです。また、リストの長さがわからないと仮定して、できるようにしたいと思います。 私がこれまで考えてきた方法は次のとおりです。 方法1 set $list found=false find=9 count=1 while [ $count -lt $# ]; do if [ "${@:count:1}" …

6
パスワードを何度も入力することなく、SSH pubキーをサーバーのリストに伝達するにはどうすればよいですか?
最近、サーバーのリストへのユーザー名/パスワードアクセスが許可されたので、SSH公開キーをこれらのサーバーに伝達して、より簡単にログインできるようにします。 明確になるように: これを自動化するために利用できる既存の公開キーはリモートサーバー上にありません。 これは、これらのサーバーに初めてログインするときになります。サーバーにアクセスするために資格情報を常に入力する必要はありません。 またssh-copy-id、forループで繰り返しパスワードを入力する必要もありません。

7
sudoを必要とするスクリプトがなければ、sudoを使用してプロンプトを表示する必要がありますか?
バックライトの明るさをきめ細かく制御できるスクリプトがありsudo、実行する必要があります。基本的にこれです: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | tee $backlight とに住んでい~/bin/backlight-adjustます。特権のある場所に書き込むsudoため、スクリプトには特権が必要tee $backlightです。したがって、で実行しないと失敗しますsudo。 このアプローチには問題があります。なぜなら、私はただ実行するsudo backlight-adjustこと~/binはできないからです。なぜなら$PATH、sudo環境の中ではなく、自分の環境の中だけにいるからです。だから私は走らなければならないsudo env "PATH=$PATH" backlight-adjustか、何か似たようなものが必要だ。 あるいは、次のように書くこともできます。 backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | sudo tee $backlight パスワードの入力を求められます。 2番目のアプローチは、sudoと入力することを覚えておく必要がないため、私にとってはうまく機能します。プロンプトが表示されます。そして、私はそのままにしておくことができ$PATHます。これは全体的に便利ですが、2番目の方法でこれを行うべきではない理由はありますか? (Xubuntu 14.04を実行していますが、シェルがGNU bash 4.2.45である場合、違いが生じます。)

6
同じヘッダーで複数のファイルを連結する
同じヘッダーとその下の異なるベクターを持つ複数のファイルがあります。それらをすべて連結する必要がありますが、最初のファイルのヘッダーのみを連結し、他のヘッダーはすべて同じであるため連結しないようにします。 例:file1.txt &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; A B C file2.txt &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; D E F 出力が必要です &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; A B C D E F Rでスクリプトを記述できますが、シェルでそれが必要ですか?


5
シェルスクリプト:インターネット接続を確認する適切な方法は?
インターネット接続をチェックするというスクリプトを見つけました。インターフェイスがアップしている場合はIPアドレスをチェックしますが、インターネット接続をチェックしません。私はこのようなpingを使用するものを見つけました。if [ 'ping google.com -c 4 | grep time' != "" ]; thenしかし、ping自体が何らかの理由でハングする場合があるため(たとえば、IOのスタックを待機している場合)、これは信頼できない場合があります。 スクリプトを使用してインターネット接続を確認するための適切な/信頼できる方法に関する提案はありますか?いくつかのパッケージを使用する必要がありますか? cronたとえば、定期的にチェックできるようにする必要があります。その後、接続がダウンしたときに何かを実行します。ifup --force [interface]

8
シェルスクリプトに構成ファイルを使用する
私は自分のスクリプトの設定ファイルを作成する必要があります:ここに例があります: スクリプト: #!/bin/bash source /home/myuser/test/config echo "Name=$nam" &gt;&amp;2 echo "Surname=$sur" &gt;&amp;2 の内容/home/myuser/test/config: nam="Mark" sur="Brown" うまくいきました! 私の質問:これはこれを行う正しい方法ですか、または他の方法がありますか?

6
スクリプトに算術変数を追加する方法
フォルダーに含まれる多数のファイルの行サイズを累積したい。次のスクリプトを作成しました。 let a=0 let num=0 for i in folder/* do num=`cat $i | wc -l` a=$a+$num done echo $a スクリプトの最後にあるのは123 + 234 + 432 + ...であり、加算の算術演算の結果ではありません。

5
Bashでhttpリンクの最後の部分を取得する方法は?
httpリンクがあります: http://www.test.com/abc/def/efg/file.jar 最後の部分のfile.jarを変数に保存したいので、出力文字列は「file.jar」です。 条件:リンクの長さは異なる場合があります。例: http://www.test.com/abc/def/file.jar. 私はそのようにしてみました: awk -F'/' '{print $7}' 、しかし問題はURLの長さなので、どんなURLの長さでも使用できるコマンドが必要です。
25 bash  shell-script  awk  cut 

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