最新記事

シーケンス出力
linux
shell-script
scripting

シーケンス出力

#!/bin/ksh for i in `seq 1 10` ; do n=`expr $RANDOM`; ( for (( k=1; k<=10; k++ )) do echo -n "$k" done ) echo "$k, $n" done このスクリプトを作成しましたが、正確な結果は出ません。 12345678910, 17517 12345678910, 3695 12345678910, 8841 12345678910, 11553 12345678910, 2019 12345678910, 3503 12345678910, 25789 12345678910, 24825 12345678910, 8039 12345678910, 30532 1-10の乱数を並べるべきですが、

Admin

Bash メニューは、ユーザーが引数を渡すかどうかによって異なるスクリプトを実行します。
linux
bash
shell-script

Bash メニューは、ユーザーが引数を渡すかどうかによって異なるスクリプトを実行します。

私は尋ねたStackOverflowに関するこの質問昨日、私はLinuxの知識が不足して、それを混乱させ、一般的に人々の時間を無駄にしました。 今より良いことができることを願っています。私はこの問題を解決するためにさまざまな方法を試しましたが、結局ここで人々が私に実際に必要なものが何であるかを混乱させました。 ユーザーがパラメータを渡すかどうかに応じて、別のサブメニュースクリプトを呼び出すスクリプトを作成する必要があります。引数が "help"の場合は、画面を消去し、ユーザーにhelpコマンドの使用方法を知らせる短いメッセージを表示する必要があります。それ以外の場合、スクリプトはそのサブメニューを表示します。 他のパラメータは「ファイル」「テキスト」「ステータス」であり、使用される場合はエキスパートスクリプトを呼び出し、それ以外の場合はユーザーメニューから初心者スクリプトを呼び出します。 私は、ユーザーが特定のパラメータを渡したかどうかに応じて実行したいfileExpert、fileNovice、textExpert、textNoviceなどの名前の合計6つの異なるスクリプトプレースホルダーを持つモデルを作成しました。 これまでの研究を通じて、同様の条件付きテストを設定する必要があることを知っていますが、 if $>0 then go into expert or if there are no arguments execute novice それ以上には完全に迷っています。 これは完全に話すことができない音のように聞こえず、ある程度真実があることを願っています。

Admin

両方のコマンドの「stdout」を接続します。
bash
shell-script

両方のコマンドの「stdout」を接続します。

2つのコマンドをリンクする方法はstdout?例えば。次cat file1 file2のことは、一部の操作の結果file1です。file2次のようなもの: cat "$(head file1)" "$(tail file1)"

Admin

エラーメッセージを説明してください。
bash
shell-script

エラーメッセージを説明してください。

私のスクリプトにはという関数がありますmessages。 Linux Mintで書いて問題なく実行しましたが、Debianバスターステーションに移動したときの機能は/usr/bin/messages。 以下を呼び出す起動スクリプトがありますmessages。 起動スクリプト # call to messages script . messages 情報 messages() { # reformat the arguments and return them } 後でスクリプトを開始 messages "This is a message" 投げるもの ./startup_script: line 35: .: /usr/bin/messages: cannot execute binary file messages: could not open mailbox `/path/to/my/script/': No such file or directory /usr/bin/messagesだから私の代わりに呼び出される関数に関連するエラーがたくさんあります。 を追加した後、関連するtype messages "This is a message"出力は次のようになります。 messages is /usr/bin/messages 関数の名前を変更することもできますが、この状況を処理するより良い方法があるかもしれません。 システムバイナリを無視し、独自の機能を使用するようにスクリプトにどのように指示しますか? ¹この関数は複数のスクリプトで複数回呼び出されるため、名前を変更するだけでは最も簡単なオプションではありません。

Admin

複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?
shell-script
awk
sed

複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?

4つの列と300行のテキストファイルがあります。 100番目の行が1 * 0.02、2 * 0.02 ...の積になり、100番目の行が2.2、2.4 ...になる5番目の列を追加したいと思います。 0.02 0.04 . . . 2 (in 100 lines) 2.2 2.4 . . . 12 (in 300 lines) 私のテキストファイル: # "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count" 0 0 0 0 1 100 0 0 2 200 0 0 3 300 0 0 . . 98 9800 16 16 99 9900 16 16 100 10000 15 15 . . 299 29900 48 48 300 30000 55 55 予想出力: # "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count" 0 0 0 0 0 1 100 0 0 0.02 2 200 0 0 0.04 3 300 0 0 0.06 . . 98 9800 16 16 1.96 99 9900 16 16 1.98 100 10000 15 15 2 . . 299 29900 48 48 11.8 300 30000 55 55 12

Admin

cshファイルで権限コマンドを検索して印刷する
shell-script
shell
find
chmod
csh

cshファイルで権限コマンドを検索して印刷する

.cshディレクトリ内のファイルの権限を見つけて表示できるファイルを作成します。 スクリプトの次の内容を使用してください #!/bin/csh -b find . type -f \( -name "*.sh" -o -name "*.txt" -o -name "*.log" -o -name "*.pl" -o -name "*.py" \) \ -printf "depth="%d/"sym perm="%M/"perm="%m/"size="%s/"user="%u/"group="%g/"name="%p/"type="%Y\\n スクリプトをインポートすると出力が出ないため、機能しないようです。このスクリプトを実行するより良い方法はありますか?

Admin

ディレクトリを繰り返しますが、最新のファイルはスキップされます。
shell-script
files

ディレクトリを繰り返しますが、最新のファイルはスキップされます。

私はbashスクリプトに初めて触れましたが、使用する必要があります。 ディレクトリを繰り返して、すべてリモートサーバーにアップロードしたいと思います。その後、削除する必要があります。 今私が持っている問題は次のとおりです。 tcpdumpがこのディレクトリにpcapデータを(回転したファイルと共に)書き込んでいるので、最新のファイルをアップロードしたくありません。ディレクトリを繰り返すときに最新のディレクトリを100%スキップするにはどうすればよいですか?ファイルを作成してアップロードするプロセスは並行して行われるため、アップロードが開始されるとすぐに「新しい」最新のファイルがある可能性があります。 2つの最新のアップロードをスキップしても大丈夫ですが、今は最新のファイルをアップロードしたくありません。 「一般」ループの解決策を読んで bash スクリプトを学習しようとしていますが、構文は非常に混乱しています。したがって、開始点を支援したり、初心者にできる部分的な解決策を教えていただきありがとうございます。わかります。 ありがとうございます! PS:最新のファイルには最新のタイムスタンプもあります。

Admin

IDSが一致せず、列数が可変であっても、IDに基づいてCSVファイルをマージできます。
shell-script
text-processing
awk
csv
join

IDSが一致せず、列数が可変であっても、IDに基づいてCSVファイルをマージできます。

私はbashスクリプトを作成していますが、プロセスの一部では、列の整合性を維持しながらcsvファイルを一緒にリンクする必要があります。たとえば、次の形式の2つのファイルがあります。 F1 ID,MD,L1,L2,L3,GD,L4 12,OB,AA,PP,AA,TT,AA 15,OB,PP,PP,PP,TT,AA F2 ID,MD,L7,L8,L9,L10,GD 13,OB,PP,AA,AA,AA,AA 15,OB,PP,PP,PP,AA,AA 出力は次のとおりです。ここで、一致しないID戻り値はNMであり、重複列(この場合は「GD」)は各ファイルの値に基づいて表示されます。 ID,MD,L1,L2,L3,GD,L4,L7,L8,L9,L10,GD 12,OB,AA,PP,AA,TT,AA,NM,NM,NM,NM,NM 13,NM,NM,NM,NM,NM,NM,PP,AA,AA,AA,AA 15,OB,PP,PP,PP,TT,AA,PP,PP,PP,AA,AA 私はjoinそれが有望に見えるので、それをやってきました。join -t, -eNM -a1 -a2 -o 0,1.2,1.3,1.4,1.5,1.6,1.7,1.8,2.3,... F1 F2 しかし、いくつかの問題が発生しました。 このオプションを使用すると、-o各ファイルごとに独立して異なる正確な列数がわかっていると仮定します。 結果でエラーが発生しました: join: REPORT_2|15-10-2019|15:39:25.csv:5: is not sorted: 04181646 代替案があればjoin提案を受け入れます。ありがとうございます。

Admin

テキストファイルから電子メールアドレスを読み、端末を使用してその電子メールアドレスに電子メールを送信する方法
shell-script
email

テキストファイルから電子メールアドレスを読み、端末を使用してその電子メールアドレスに電子メールを送信する方法

私はスクリプトが初めてです。テキストファイルからEメールアドレスを読み、そのEメールアドレスにEメールを送信する方法を理解するのに役立ちますか? たとえば、emailAdd.txt このtxtファイルから: [email protected] [email protected] [email protected] このメールで「Hello World」を送りたいです。これは単なる例であり、約30のEメールアドレスに送信する必要があります。

Admin

SQLPLUS出力値をルート変数に割り当てる方法
bash
shell-script
sqlplus

SQLPLUS出力値をルート変数に割り当てる方法

次の関数を使用して、rootユーザーとしてsqlplus出力をunix変数に割り当てようとします。 function sql { su - oracle -c " export ORACLE_HOME=$( "`grep "OraG" /u01/app/oraInventory/ContentsXML/inventory.xml | awk '{print $3}'| cut -d= -f2 | sed 's/\"//g'`"/bin/crsctl status resource -w "((TYPE = ora.database.type) AND (LAST_SERVER = $(hostname -s)))" -f | grep ^ORACLE_HOME= | awk -F= '{ print $2 }' ) export ORACLE_SID=$( "`grep "OraG" /u01/app/oraInventory/ContentsXML/inventory.xml | awk '{print $3}'| cut -d= -f2 | sed 's/\"//g'`"/bin/crsctl status resource -w "((TYPE = ora.database.type) AND (LAST_SERVER = $(hostname -s)))" -f | grep ^USR_ORA_INST_NAME= | awk -F= '{ print $2 }' ) export PATH=$PATH:$ORACLE_HOME/bin SQL_OUTPUT=$( $ORACLE_HOME/bin/sqlplus -s / as sysdba<< OCI2 connect / as sysdba set heading off set feedback off set linesize 145 set linesize 145 set feedback off spool /tmp/sqlplus.log $1 spool off exit OCI2 ) echo "$SQL_OUTPUT"| grep -v \^$ " } SPFILE=$(sql "select value from v\$parameter where name = 'spfile';") しかし、次のエラーが発生します [root@xxxxxx tmp]# SPFILE=$(sql "select value from v\$parameter where name = 'spfile';") -bash: /bin/sqlplus: No such file or directory

Admin

bashで次の文字列を正規表現に一致させるにはどうすればよいですか?
bash
shell-script
regular-expression

bashで次の文字列を正規表現に一致させるにはどうすればよいですか?

文字列の下で条件付き演算子を比較する必要があります。したがって、特定のタスクは、81.1.4_r4345が特定のタスクを実行するか、「完了」と一致する場合にのみ実行されます。 vasanth-releases_81.1.4_r4345.tar.gz vasanth-releases-done.tar.gz If [[ $var == ‘vasanth-releases_{0-9}_{0-9}.tar.gz ]] ; then echo ‘True’ Elsif [[ $var == ‘Vasanth-releases-{a-z}.tar.gz ]]; then echo ‘False’ else echo ‘default’ fi 上記の試みは期待どおりに機能しませんでした。したがって、これら2つのファイルには正規表現形式が必要です。この問題を解決するのに役立ちますか? ありがとう

Admin