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

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


4
bash関数から値を返す
数値が有効な10桁の数値である場合に1を返す関数があります。 valNum() { flag=1 if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then echo "Invalid Number" flag=0 fi return $flag } それは以下によって呼び出されています: if [[ $(valNum $num) -eq 1 ]]; then #do something fi 数値が有効であれば関数は正常に機能しますが、無効な数値を入力すると構文エラーが表示されます。

3
SQLクエリの出力を変数に割り当てる
Oracleデータベースに接続してクエリを実行し、出力を変数に割り当てていますが、変数の値をエコーすると、正しく出力されません。 count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END set pagesize 0 feedback off verify off heading off echo off; select max(cust_id) from cutomers exit; END` echo $count クエリは、データベースで実行されると正しい結果を返します。しかし、「カウント」変数の値が正しくありません。

5
曜日に基づいてIf-Elseクエリを使用するにはどうすればよいですか?
問題:今日が木曜日かどうかを確認し、この状態の結果に基づいてさまざまなアクションを実行する必要があります。私は2つの異なるアプローチを試しました: 曜日名の取得: DAYOFWEEK=$(date +"%a") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == "Thu"]; then echo YES else echo NO fi 日番号を取得する: DAYOFWEEK=$(date +"%u") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == 4]; then echo YES else echo NO fi どちらの場合も、出力はYESであるべきですが、NOです。なにが問題ですか?

2
時間を比較する良い方法は?
現在の時刻を確認し、実行するはずの適切な時刻でない場合はスクリプトを中止する必要があります。また、他の誰かがそれを実行した場合、中止する必要があります。 例:午後10時から午前2時(4時間のウィンドウ)の間に開始された場合にのみ、スクリプトを実行する必要があります。 現在、私は以下を行っています。時間をかけdate +%k%Mてハードコードされた数値と比較する #!/bin/sh currTime=`date +%k%M` check_time_to_run() { tempTime=$1 if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then echo "Time is between 2 AM and 10 PM. Aborting." exit 1 else echo "Time is after 10 PM and before 2 AM. Running normally." fi } check_time_to_run $currentTime …

3
FreeBSDで起動時に実行するスクリプトを設定するにはどうすればよいですか?
FreeBSD 9を使用していますが、イーサネットケーブルが接続されているかどうかをチェックし、接続されている場合はそれに接続するスクリプトを作成したいと考えています。マシンが起動するたび、またはログインするたびに実行されるように設定したいcrontabですが、起動時にではなく、特定の時間に実行するためにのみ実行できます。誰かが私にこれをどうやって得ることができるか教えてもらえますか?

5
bashスクリプトの一部のキーワードのみをどのように色付けしますか?
ユニットテストコードを実行しています。ユニットテストコードは通常のテキストを出力します。テキストが多いので、ユーザーにとって重要なキーワードを強調したいと思います。 この場合のキーワードは「PASS」と「FAIL」です。 「合格」を緑色に、「不合格」を赤色にするにはどうすればよいですか?

3
EOFを使用せずにbashスクリプトからのテキスト入力を自動化する
Ubuntu Linuxを実行しています。というプログラムがあるとしmyprogramます。このプログラムは、ユーザーに入力を求めます。具体的には、ユーザーはプロンプトが表示されたら整数を入力してを押す必要がありEnterます。bashスクリプトを使用してこのプロセスを自動化したいと思います。特に、myprogram例えばを100回実行したいとします(iから1に移動するカウンターを使用100)。を実行するたびmyprogramにi、プロンプトが表示されたらの現在の値を入力します。 (ちなみに、myprogramオプション/スイッチを取ります。これら-optionsはすべて定数なので、bashスクリプト内で指定されます。) このbashスクリプトの不完全なスケルトンは次のようになります。 #!/bin/bash for i in {1..100} do myprogram -options done 次に、上記のコードを変更iして、プログラムによってプロンプトが表示されたときにの現在の値が入力されるようにします。これを行う最良の方法は何ですか? 私が使用しているソフトウェアのWebサイトでは<<EOF、最後に使用することをお勧めしていmyprogram -optionsます。これは、入力が使用するために「ファイルの終わり」を調べるようにbashに指示すると思います。しかし、入力をファイルの最後に配置したくない場合はどうなりますか?<<またはの直後に配置したい場合はどうなり<ますか? その理由は、物事がより複雑になるからです。たとえばj、いくつかの非線形、非順次的な方法で変化する整数カウンターを紹介します。私は、その後の現在値送りたいと思うjのmyprogram各反復上に、しかし、の値がjへの呼び出しの間で変更される可能性がありmyprogram -options、ファイルの末尾EOF。 何か提案はありますか?

4
コマンドラインで末尾からテキストを実行する最も簡単な方法は何ですか?
新しい(ubuntu)ボックスに取り組んでいるときに、タイプするgitと警告が表示されることがあります。 The program 'git' is currently not installed. You can install it by typing: apt-get install git-core それが起こったら、私は次のようなことをすることで最後の行をつかむことができることを知っています: !! 2>&1 | tail -n 1 しかし、どうすればその結果(apt-get install git-core)を最も簡単に実行できますか? できると気づいた `!! 2>&1 | tail -n 1` しかし、実際に出力をパイプして実行する方法もありますか?これは機能していないようです: !! 2>&1 | tail -n 1 | sh また、その2>&1部分は少し扱いに​​くいので、それを実現する簡単な方法があるかどうか知りたいと思います。 編集する これを何らかの方法で変数に保存してから、変数を実行することもできます。 !! 2>&1 | tail …

7
シェルで数字行とアルファベット行のテキストをマージする方法は?
次のようなテキストを持つファイルがあります。 AAAA BBBB CCCC DDDD 1234 5678 9012 3456 EEEE 7890 等... そして、アルファベットの行と数値の行を一致させて、次のようにします。 AAAA 1234 BBBB 5678 CCCC 9012 DDDD 3456 EEEE 7890 誰かがこれを達成する簡単な方法を知っていますか?

6
最大のファイルまたはディレクトリを見つける
tmpディレクトリ内のすべてのファイルとディレクトリ(非表示のものを含む)のサイズを出力し、人間が読める形式(例:2 GB)で最大から最小までサイズ順に並べ替えるコマンドはどれですか。 出力は次のようになります。 file.mpg 2GB file.avi 1.8GB .backtup 1.7 GB (this is directory) lsおよびduコマンドを使用しようとしましたが、正しいスイッチを見つけることができませんでした。

2
ファイルを移動しますが、閉じている場合のみ
外部プロセスで作成された大きなファイルを閉じたらすぐに移動したい。 このテストコマンドは正しいですか? if lsof "/file/name" then # file is open, don't touch it! else if [ 1 -eq $? ] then # file is closed mv /file/name /other/file/name else # lsof failed for some other reason fi fi 編集:ファイルはデータセットを表しており、別のプログラムが動作できるように、移動が完了するまで待つ必要があります。そのため、外部プロセスがファイルで行われたかどうかを知る必要があります。

2
if-elseステートメントでgrepを使用する[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 5年前休業。 入力した文字列がファイルにない場合、コードが出力されないのはなぜですか。文字列を入力してもファイルにない場合は、応答がなく、最初に戻ります。誰かが私のコードの何が悪いのか教えてもらえますか? while : do echo "Please enter a string" read input_string echo "Please enter the file name too see if that string is present in it - (Enter .abw after)" read input_string1 if grep -q $input_string $input_string1 ; then echo "Your string has been found" fi done

1
同じ内容のディレクトリ内のすべてのフォルダを検索します
Ubuntuで、ディレクトリ内の重複するフォルダー(つまり、同じ内容のフォルダー)を見つけるものはありますか?重複するファイル(fdupesなど)を見つけるためのコマンドラインツールは既にいくつかあると思いますが、代わりに重複するフォルダーを見つけたいと思います。つまり、ファイル名と他のメタデータは異なる場合がありますが、それらに含まれるファイルの内容に関して一致するフォルダーを見つけます。

3
シェルスクリプトは#!なしでも動作します(sha-bang行)
私はシェルスクリプトに慣れていないため、スクリプトの先頭に#!(sha-bang)行を使用してインタープリターを呼び出す多くの本が書かれています。これにより、スクリプトの新しいシェルが呼び出され、行ごとに解釈が行われます。私の基本的なスクリプトの一部はまだ魔法の行なしで実行されています。 だから私の質問は: 基本的なスクリプトはどこからインタープリターを取得しましたか。 スクリプトがインタープリターを特定する方法を教えてください。 次に、基本的なスクリプトについて説明します。スクリプトには次の行が含まれています。 「魔法の線のない基本的なスクリプト」をエコー

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