最新記事

スクリプトは、Y分の間、X分ごとに「if」ステートメントを繰り返し、これがtrueでなければ失敗します。
bash
scripting

スクリプトは、Y分の間、X分ごとに「if」ステートメントを繰り返し、これがtrueでなければ失敗します。

「autorep」および「sendevent」コマンドはAutosysにのみ適用されますが、私が実行する必要があるスクリプトは次のとおりです。 if autorep -g GLOBAL_VARIABLE |grep " 0 " >/dev/null then sendevent -E SET_GLOBAL -G "YES" else sleep 2 fi GLOBAL_VARIABLE = 0 または 20 分までの間にこのスクリプトを繰り返すにはどうすればよいですか。 forループを考えていますが、いくつかのガイドラインが必要です。 autorepコマンドの出力: Global Name Value Last Changed ________________________________________________________________ ____________________________________________________________________________________________________ ____________________ GLOBAL_VARIABLE Y 12/15/2020 00:00:01 GLOBAL_VARIABLE値がゼロでない場合は、2分間待機してから再試行するスクリプトが必要です。 20分終了時点の値が0でない場合、スクリプトは1で終了する必要があります。

Admin

スクリプトはディレクトリによって異なる動作をします。
shell-script
shell
scripting
rename

スクリプトはディレクトリによって異なる動作をします。

名前に奇妙な文字を含むファイルの名前を変更するように特別に設計された、より大きなスクリプトから抽出された単純なスクリプトがあります。あるディレクトリで正常に実行されると述べたように、同じコンピュータ上の別のディレクトリで正常に実行しましたが、何らかの理由でより高いレベルのディレクトリで実行すると、ファイル名の変更エラーが発生します。たとえば、UnsortedMusicというフォルダに対してこのコマンドを実行しました。やるべきことは次のとおりです。 /UnsortedMusic/Dir 001/SubDir 001/Song To Sing.flac > /UnsortedMusic/Dir 001/SubDir 001/SongToSing.flac 名前からスペースを削除し、デフォルトで同じコードを使用しますが、特にディレクトリのディレクトリ名からスペースを削除します。 /UnsortedMusic/Dir 001/SubDir 001/SongToSing.flac > /UnsortedMusic/Dir001/SubDir001/SongToSing.flac これは他のディレクトリではうまく機能しますが、何らかの理由で特定のディレクトリでは次のことが行われます。 /UnsortedMusic/Dir 001/SubDir 001/Song To Sing.flac > /UnsortedMusic/Dir001/SubDir001/UnsortedMusicDir001SubDir001SongToSingflacSongToSingflac ご覧のとおり、すべてのディレクトリ名にファイル名を変更するだけでなく、「.」も削除します。 .flacでは、これは何千ものファイルを手動で変更する必要があることを意味します。 このコードは次のとおりです。 #!/bin/bash #set -e FolderName="Unsorted" #Dir location to be sorted # Log Location on Server. LOG_LOCATION=$(pwd) #/home/user/scripts/logs exec > >(tee -i $LOG_LOCATION/RenameFile.log) exec 2>&1 Start by seeing if the new directory allready exists, if not, make it echo "Looking in $FolderName for files with abnormal characters" #Rename any directories that might have a weird name structure that could conflict find ${FolderName} -type f \( -name "* *" -o -name "*(*" -o -name "*[*" -o -name "*&*" \) -print0 | sort -rz | while read -d $'\0' file; do mv -v "$file" "$(dirname "$file")/$(basename "${file//[^a-zA-z0-9_-.]/}")"; done #echo "Log Location should be: [ $LOG_LOCATION ]" echo "Finished Process" これは、次のような大きなプロセススクリプトの一部です。 #!/bin/bash #set -e NewDirName="TestDirV2" #New Dir name FolderName="TestDir" #Dir location to be sorted # Log Location on Server. LOG_LOCATION=$(pwd) #/home/user/scripts/logs exec > >(tee -i $LOG_LOCATION/Organizer.log) exec 2>&1 #Start by seeing if the new directory allready exists, if not, make it if [ ! -d ${NewDirName} ]; then mkdir -p ${NewDirName} chmod -R a+rwx ${NewDirName} fi echo "Looking in $FolderName for files with abnormal characters" #Rename any files that might have a weird name structure that could conflict find ${FolderName} -type f \( -name "* *" -o -name "*(*" -o -name "*[*" -o -name "*&*" \) -print0 | sort -rz | while read -d $'\0' file; do mv -v "$file" "$(dirname "$file")/$(basename "${file//[^a-zA-z0-9_-.]/}")"; done echo "Looking in $FolderName for directories with abnormal characters" #Rename any directories that might have a weird name structure that could conflict find ${FolderName} -type d \( -name "* *" -o -name "*(*" -o -name "*[*" -o -name "*&*" \) -print0 | sort -rz | while read -d $'\0' file; do mv -v "$file" "$(dirname "$file")/$(basename "${file//[^a-zA-z0-9_-.]/}")"; done for FileType in $(find $FolderName -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u) do echo "Finished removing odd characters that may result in problems" NewDir=$(echo "${NewDirName}/${FileType}"); if [ ! -d ${NewDirName}/${FileType} ]; then echo "$NewDir does not exist" echo "Making $NewDir" mkdir -p ${NewDir} chmod -R a+rwx ${NewDir} fi echo "Now looking for renamed $FileType files" for FileToMove in $(find ${FolderName} -name "*.${FileType}"); do echo "Dir to move ${FileToMove}" echo "File to move ${FileToMove##*/}" SpecificFile=$(echo "${FileToMove##*/}"); echo "Checking to see if $SpecificFile already exist in $NewDir" if [ -f ${NewDir}/${SpecificFile} ]; then x=0 while [ -f ${NewDir}/${SpecificFile} ] do echo "File ${SpecificFile} already exists, renaming" SpecificFile=${x}${SpecificFile} x=$(( x++ )); echo "Renamed to $SpecificFile" done fi #rsync -rav --progress ${FileToMove} ${NewDir}/${SpecificFile} mv -v ${FileToMove} ${NewDir}/${SpecificFile} done done chmod -R a+rwx ${NewDir} echo "Log Location should be: [ $LOG_LOCATION ]" echo "Finished Process"

Admin

stdinが空の場合、コマンドの実行
linux
bash
shell-script
shell
scripting

stdinが空の場合、コマンドの実行

xargs --no-run-if-empty標準入力が空の場合にのみ実行されるように、反対のタスクを実行したいと思います。 使用例: ip a | fgrep "inet " | grep -ve " tun" -e " lo" # pipe it into something and echo localhost if empty

Admin

文字列を含む行を見つけて、awkを使用してその行とテキストファイルのすべての後続の行を返します。
shell
text-processing
awk
command-line
scripting

文字列を含む行を見つけて、awkを使用してその行とテキストファイルのすべての後続の行を返します。

重複した内容についてお詫び申し上げます。しかし、私が経験した問題のほとんどは、行のフィールドから特定の値を取得するか、既知のファイルからtail最後の行を取得することに関連しています。nn先験的に。一致する値を持つ行を見つけて、その行と後続のすべての行のすべてのフィールドを取得します。詳細は次のとおりです。 データベースの検索に使用されるクエリ基準に関する情報を含む、さまざまな数のメタデータヘッダー行を含むオンラインデータベースから返されたデータファイルがあります。このヘッダー行の後にはきちんとしたデータフレームがあります。例: Query date: February 3, 2020, 1:34:57 PM Database: \n Search criteria: \n Geographic bounding box coordinates: -130.00 20.00; -130.00 24.00; -120.00 24.00; -120.00 20.00 Sample type: rocks > sediments > dust \n SAMPLE ID,REFERENCE,LONGITUDE,LATITUDE,X,Y,Z,A 56,Author (YYYY) Title: Journal,-127.3,22,1.7,2.3,0,0.55 56,Author (YYYY) Title: Journal,-127.34,22.4,1.9,1.3,0.5 以下を使用して、データフィールド名を含む行を正常に見つけました。 SID=$(awk -F, '{ if ($1 == "SAMPLE ID") print NR }' data.csv) echo $SID9予想通りに返却 これで、その行のフィールド名とデータを含むすべての後続の行を取得して新しいファイルに送信したいと思います。つまり、入力ファイル全体を解析し、その行を新しいファイルにNR >= $SID送信したいと思います。 これは私が使用したコードですが、いくつかの行を除くほとんどすべてのデータを返します。目的のデータを取得する方法やデータを含む行を省略する理由を理解できません。 awk -F, -v r=$SID '{ if (NR >= $r) print $0}' data.csv > output.csv これが私の予想結果です。 SAMPLE ID,REFERENCE,LONGITUDE,LATITUDE,X,Y,Z,A 56,Author (YYYY) Title: Journal,-127.3,22,1.7,2.3,0,0.55 56,Author (YYYY) Title: Journal,-127.34,22.4,1.9,1.3,0.5 どんな助けでもいいでしょう!明確でなければ、awkに完全に初めて触れたのです!つまり、良い学習入門資料へのリンクも歓迎します。

Admin

SFTPを使用して複数のファイルを配置する方法
scripting
sftp

SFTPを使用して複数のファイルを配置する方法

複数のファイルをサーバーにインポートするのに役立ちます。スクリプトを作成しましたが、すべてのファイルを配置するわけではありません。 cd /buffer/miscellaneous/new/ cd $(ls -t | head -n 1) latest=$(find -mmin -60 | cut -d'/' -f2 | tail -n +2 | tr '\n' '\t') /usr/local/bin/sshpass -p password sftp -oBatchMode=no [email protected]:/folder1 << 1 mput $latest* bye このコマンドの場合 find -mmin -60 | cut -d'/' -f2 | tail -n +2 | tr '\n' '\t' 出力は2つのcsvファイルです。 cgi_20111210_235524.csv cgi_20203127_125504.csv これで問題は、mput最初のファイルだけを配置し、他のファイルは配置しないことです。 find コマンドの出力は次のようになります。 find -mmin -60 . ./cgi_20110911_135504.csv ./cgi_20111210_235524.csv ./cgi_20203127_125504.csv

Admin

デフォルトのDialogrcファイルが画面を白黒にするのはなぜですか?
scripting
colors
dialog

デフォルトのDialogrcファイルが画面を白黒にするのはなぜですか?

次のコードを含むbashスクリプトがあります。 if [ ! -f /home/tools/test.dialogrc ] then dialog --create-rc "/home/tools/test.dialogrc" fi 既存のファイルが見つからない場合、test.dialogrc ファイルはデフォルトの色で正常に作成されます。 次に、ダイアログボックスがそのファイルを色などのソースとして使用するように指示する必要があると考える次のことがあります。 export DIALOGRC=/home/tools/test.dialogrc ただし、通常の青色などではなく、灰色と黒のダイアログボックスが表示されます。ノート: 何らかの方法でDialogrcファイルの内容を変更しませんでしたが、これはデフォルトです。 ファイルを削除または名前を変更すると、デフォルトの色が再び表示されます。 ここで何が起こっているのかご存知ですか?私は端末がそれをxtermとして認識すると信じています(助けになれば)。

Admin

同じ名前のフォルダに再帰的に解凍するZshスクリプト
linux
command-line
scripting
zsh
rar

同じ名前のフォルダに再帰的に解凍するZshスクリプト

この質問にはすでに答えがあります。: 圧縮パッケージと同じ名前のフォルダに解凍します。 (回答3個) 閉鎖昨年。 zshスクリプトを使用して他のディレクトリ内のすべてのディレクトリを解凍できますか? 次のように: dir |_dir1.rar |_dir2.rar |_dir3.rar コマンドにCDが含まれないようにします。 zshスクリプトを実行する前に、フォルダにCDを挿入してください。このスクリプトは、すべての.rarディレクトリを同じ元のディレクトリ名を持つ同じフォルダに抽出する必要があります。たとえば、dir1.rarはdir1などで抽出する必要があります。 これができることを願っています。

Admin

Bashスクリプトは、他の変数に格納された値に基づいて変数を生成します。
bash
scripting

Bashスクリプトは、他の変数に格納された値に基づいて変数を生成します。

アドバイスを聞きたいです。 JSONファイルを返すIOTデバイスAPIを照会していますが、データの順序が常に順番に出力されるわけではありません。 bashを使用してjsonから値番号を正常に抽出し、連結して変数に保存しました。データをソートして保存するために、関連付けられた変数の値に基づいて変数を作成したいと思います。私はそれを使用していますジャックJSONと配列インデックスのクエリJSONでさまざまなオブジェクトをクエリし、$ idを生成します。 did=myvar$id echo $did myvar10 これが私が今詰まっている部分です。 $didに格納されている値で新しい変数を作成できるようにしたいです。 例えば、 もし私がエコ$didと入力してmyvar10を返すには、$ myvar10という新しい変数を作成する必要があります。 もし私がエコ$disを実行してmyvar8を返す場合は、$ myvar8という新しい変数を作成する必要があります。 誰かが私が正しい方向に動くのを助けることができますか? ティア

Admin

BashスクリプトのLinux showkeyユーティリティはデータを返しません。
linux
bash
scripting

BashスクリプトのLinux showkeyユーティリティはデータを返しません。

シェルでこのshowkey -aコマンドを実行すると、コマンドが実行され、リアルタイムで対話できることが少し混乱します。 下記をご覧ください timeout 10 /usr/bin/showkey -a Press any keys - Ctrl-D will terminate this program t 116 0164 0x74 a 97 0141 0x61 s 115 0163 0x73 d 100 0144 0x64 f 102 0146 0x66 g 103 0147 0x67 j 106 0152 0x6a f 102 0146 0x66 k 107 0153 0x6b l 108 0154 0x6c d 100 0144 0x64 このコマンドをシェルスクリプトに追加すると、出力は表示されません。つまり、スクリプトまたはスクリプト内で実行されるコマンドと対話することはできません。 これは私のbashスクリプトです。 #!/bin/bash timeout 10 /usr/bin/showkey -a exit 0 このスクリプトを実行すると、10秒待ってからシェルが終了します。押したキー、コードを表示してユーザーと対話するにはどうすればよいですか? 私がこれをしたいのは、キーボードテストを実行する前にスクリプトが多くの作業を実行する必要があり、キーボードテスト後にスクリプトが実行する必要があるさまざまなタスクがあるためです。どこでも答えが見つからないので、最後の手段としてここに質問を残します。誰かが助けることができることを願っています。

Admin

列 9-14 の文字が別のファイルに見つからない場合は、出力ファイルから行を除外します。
scripting
columns

列 9-14 の文字が別のファイルに見つからない場合は、出力ファイルから行を除外します。

2つの列で区切られたファイルがあり、両方のファイルにトランザクション識別子が見つかったレコードのみを含む2つの新しいファイルを作成する必要があります。識別子は列9から14までのフィールドにありますが、各ファイルの各レコードには9から14の範囲の前後に固有のデータがあり、可変データを出力ファイルに転送する必要があります。各識別子は一度だけ現れるか、まったく現れないように保証されます。 私はPythonスクリプトを使って直接書くことができますが、ライブラリ内の列で区切られたファイルの基本的なサポートはあまりありません。以前のコンピューティング時代に合わせて作成されたため、この問題は簡単に処理できます。もちろん、ツールが古すぎる場合は、Pythonスクリプトを直接作成します(列で区切られたファイルを処理するパッケージを知っている場合を除く)。 ご協力ありがとうございます。 例:列9〜14の文字を含む行が各ファイルにあるため、ID:525この行はその出力ファイルに書き込まれます。両方の入力ファイルには、他のファイルに見つからないレコードがあります。 入力ファイル1.txt Record1 ID:525 DATA A Record2 ID:232 DATA B Record3 ID:811 DATA C Record4 ID:400 DATA D 入力ファイル2.txt Record1 ID:448 DATA E Record2 ID:525 DATA F 出力ファイル1.txt Record1 ID:525 DATA A 出力ファイル2.txt Record2 ID:525 DATA F

Admin