演習1:スクリプトを作成する
1.変数FILEの値を/ etc / passwdに設定する
2. / etc / passwdの各ユーザーに挨拶し、相手のIDが
次のようになることを伝えます(ヒント:LINE = `wc -l / etc / passwd | cut -d" "-f1`)
こんにちは、ルート、あなたのUIDは0です。3
.ユーザーの数を数えます
1つ回答:
#!/ bin / bash
fl = / etc / passwd
count = `cat $ fl | wc -l`
#次はパイプラインで、ファイルの各行を読み取る次のループです
猫$ fl |
行を読みながら
行う
#分割後のコンテンツの最初の列を取得
user = `echo $ line | awk -F ':' '{print $ 1}'`
#代表 :セグメント$ 1は最初に取ることです1つのセグメントを
uid = `echo $ line | awk -F ':' '{print $ 3}'`
echo "hello、$ user Your UID is $ uid"
終わった
echo "==== User_count:$ count ===="
2つの回答:#!/ Bin / bash
file = "/ etc / passwd"
LINES = `wc -l $ file | カット-d "" -f1`
私のために `seq 1 $ LINES`; do
userid = `head-$ I $ file | 尾-1 |カット-d:-f3`
ユーザー名= `head-$ I $ file | 尾-1 |カット-d:-f1`
echo "hello $ username、your UID is $ userid"
終わった
echo "$ LINESユーザーがいます"
3つの回答:#!/ Bin / bash
file = / etc / passwd
num = 0とします
`cat $ file`で私のために; do
ユーザー名= `echo" $ I "| カット-d:-f1`
userid = `echo" $ I "| カット-d:-f3`
echo "Hello、$ username、your UID is $ userid"
num = $ [$ num + 1]
終わった
echo「$ numユーザーがいます」
#ユーザー数が以前取得しました
演習2:スクリプトを作成する
1.作業ディレクトリを/ varに切り替える
2.次のように、/ varディレクトリ内の各ファイルまたはサブディレクトリに順番に挨拶します
((ヒント:/ var / *のFILE、または `のFILEを` ls / var`;)
こんにちは、ログ
3. / varディレクトリに複数のファイルがあり、答え1が表示されます。
#!/ bin / bash
cd / tmp
/ tmp / *のfor i
行う
echo "こんにちは、$ i"
終わった
count = `ls -l | grep '^-' | wc -l`
echo "==== file_count:$ count ===="
2つの回答:#!/ Bin / bash
cd / var
num = 0とします
`ls / var / *`; doの私にとっては
echo "hello $ I"
num = $ [$ num + 1]
終わった
echo "ファイル数は$ numです"
練習3:スクリプト作成
1.セットに変数ファイルは/ etcの値を/ passwdの
2.ループは、ファイル/ etc / passwdの最初の2,4,6,10,13,15行を読み込み、その内容を表示
3 。これらの行を/ tmp / mypasswdファイルに保存します
回答:
#!/ bin / bash
file = "/ etc / passwd"
2 4 6 10 13 15のIの場合;
exec 3> / tmp / mypasswd
line = `head-$ I $ file | 尾-1`
「$ line」をエコー
echo "$ line">&3
exec 3>&-
行って
練習4:スクリプト作成
スクリプトに2つの整数を渡すために、スクリプトを算出して表示し二つの整数、違い、製品、商
回答:
#!/ bin / bash
a = $ 1
b = $ 2
[-z $ a] && echo "\ $ 1 number1"を&&終了1
[-z $ b] && echo "please \ $ 2 number2" && exit 2
[!$#-eq 2] && echo "--please num1 num2" && exit 3
#$#スクリプトに渡されるパラメーターの数
#-eqは= と同等、-ne は等しくない、 -ge> =、-gt>、-le <=、-lt <
エコー "$ a + $ b = $(($ a + $ b))"
エコー "$ a-$ b = $(($ a-$ b))"
echo "$ a * $ b = $(($ a * $ b))"
エコー "$ a / $ b = $(($ a / $ b))"
vim test.sh
#!/ bin / bash
echo "first number $ 1"(最初の数値の出力を示します)
echo "second number $ 2"(2番目の数値の出力を示します)
echo "$(($ 1 + $ 2))"(2つの数値の合計を出力)
echo "$ [$ 1- $ 2]"(2つの数値の差を出力)
echo "$ [$ 1 * $ 2]"(2つの数値の積を出力します)
echo "$ [$ 1 / $ 2]"(2つの数値の商を出力します)
:wq(viエディターを保存して終了する手段)
chmod + x test.sh(test.shに実行権限を与える)
./test.sh 2 3(2つのパラメーターを渡してスクリプトを実行する
演習5 :スクリプトを
記述1.ファイル/tmp/20200419.tar.gzが存在するかどうかを確認し、存在しない場合はループで待機します。
- 指定されたディレクトリ/ home / vp + work ID / dataにファイルをコピーして解凍します。
3.当日に不要なftp20200419.sqlファイルを削除します
回答:
#!/ bin / sh
#呼び出し方法:./chk_data.sh 2020-04-19
#Data Date
p_as_of_date = $ 1
#データ日付の有効性を確認します
checklen = `expr length" $ p_as_of_date "`
if [$ {checklen} -ne 10];その後
echo "@RET_MSG:日付形式が正しくない、形式が正しい:YYYY-MM-DD"
出口-1
そうしないと
check1 = `echo $ 1 | カット-c 5`
check2 = `echo $ 1 | カット-c 8`
if ["X $ {check1}" = "X-"] && ["X $ {check2}" = "X-"];その後
日付-d $ 1> / dev / null 2>&1
もし[$?-eq 0];その後
echo "@RET_MSG:日付が正しく入力されました!"
そうしないと
echo "@RET_MSG:日付が無効です!"
出口-2
されます
そうしないと
echo "@RET_MSG:日付の区切り記号が正しくありません。正しい形式:YYYY-MM-DD"
出口-3
されます
されます
v_as_of_date = `echo $ {p_as_of_date} | awk 'gsub(/ \-/、" "){print $ 0}'`
エコー$ {v_as_of_date}
#データファイルのパス
p_data_dir = / tmp /
m_data_dir = / home / vp000301 / data /
#5S以内にファイルサイズが変更されないかどうかを確認し、変更されている場合はファイルを解凍します。それ以外の場合は、5Sがチェックを続けるまで待ちます
cd $ {p_data_dir}
pwd
echo $ {v_as_of_date} .tar.gz
while [1 -eq 1]
行う
if [-f $ {v_as_of_date} .tar.gz];その後
char_num1 = `wc -c $ {v_as_of_date} .tar.gz | awk '{print $ 1}'`
寝る5
char_num2 = `wc -c $ {v_as_of_date} .tar.gz | awk '{print $ 1}'`
エコー$ char_num1
エコー$ char_num2
if [$ char_num1 -eq $ char_num2];その後
echo "日付ファイルは大丈夫です!"
ブレーク;
そうしないと
echo "日付ファイル$ {v_as_of_date} .tar.gzが送信しています!"
5睡眠;
継続する;
されます
そうしないと
echo "データファイルが見つかりません:" $ {v_as_of_date} .tar.gz
echo $ {v_as_of_date} .tar.gz
5睡眠;
されます
終わった
cp $ {v_as_of_date} .tar.gz $ {m_data_dir}
エコー$?
cd $ {m_data_dir}
pwd
tar -zxvf $ {v_as_of_date} .tar.gz
cd $ {v_as_of_date}
rm ftp $ {v_as_of_date} .sql