linuxshell腳本輸入
⑴ 在linux shell腳本中,如何實現輸入yes執行一段指令,輸入no則執行另外一段指令
您好!可以利用Shell函數實現
#!/bin/bash
action1()
{
#指令
}
action2()
{
#另外一個指令
}
read-p"請輸入您的選擇:"choose
if[$choose="yes"]
then
action1
fi
if[$choose="no"]
then
action2
fi
⑵ linux shell腳本,運行時要輸入密碼,密碼正確才往下跑,這個怎麼實現呢
A=123456
read-p"請輸入密碼:"PASSWD
if["$PASSWD"=="$A"];then
continue
else
echo"密碼不錯誤,請重啟輸入!"
fi
⑶ linux如何在終端里輸入shell腳本
一般以#!/bin/sh開頭(不是必須要寫,但一定要單獨一行),指定執行這個腳本的shell程序(也可以用#!/bin/zsh或其他),然後就是堆命令了。
Linux的shell腳本支持很多功能,加上Linux高度模塊化的命令,完全可以用shell腳本寫出復雜的程序。
以上只是簡單介紹如何開始寫shell腳本,如果要寫復雜的腳本,還需要深入學習相關知識(如if——fi、case——esac等結構)。
當然,還需要給腳本加上可執行許可權(chmod +x ./file.sh),否則可以用sh ./file.sh方式執行腳本(這里的sh是執行腳本所需shell,命令也可以是zsh ./file.sh或其他)。
整個shell腳本,其實就相當於你在終端輸入的一系列命令,如果想在shell里做什麼,就先想想在終端可以做什麼吧,字元的的連接,就是直接用 "" 雙引號,輸出,變數定義無 $ 符號,但是使用時一定要加上 $ 符號。
"=" 賦值符號,兩邊一定不能有空格,這和其他語言有區別,尤其是你還有自己代碼美觀風格時特別注意,否則會報語法錯誤!
for 中的數組內容是以 " " 空格分隔,而非 "," 逗號分格。
條件判斷 [ true ] 中括弧 後面需要有一個空格,但是兩個中括弧之間不能有空格如 [[ true ]]。
while 條件判斷可以用 () 括弧,也可以用 [[ ]] 中括弧。
如果用windows寫shell,一定要注意換行符格式 而非 , 需要藉助一些編輯器(如notepad++)更改換行符格式!
⑷ Linux_Shell腳本編程之read讀取控制台輸入
read(選項)(參數)
選項:
-p:指定讀取值時的提示符
-t:指定讀取值時等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待了。。。
參數:
變數:指定讀取值的變數名
1、案例一:讀取控制台輸入一個NUM1值
2、案例二:讀取控制台輸入一個NUM2值,在10秒內輸入。
⑸ 如何在linux下shell編寫腳本中模擬鍵盤輸入
用 yes 命令
如 yes 123 可以不停的輸出 123,你可以用 yes 123 | head -3 輸出三次。
然後你要是要對某個程序做輸入,你用輸入重定向。
如果你說的是應答,那就用 expect,具體的用法就復雜了,自己搜教程系統地學習吧。
⑹ Linux shell 腳本 間接獲取輸入參數的方法
如果是bash,可以用indirect expansion來搞,語法為 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
會列印 123
再比如下面的腳本,依次列印腳本的各個輸入參數。
#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done
不用indirect expansion,也可以用 eval, 比如
#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done
⑺ Linux寫一個shell腳本,要實現在鍵盤輸入一個進程號,輸出這個進程號的子進程pid,怎麼寫
這個只能找出子進程:
read-p"碼如請輸入一個進程號:"value
wym=`ps-ef|sed-e's/[ ][ ]*/|/g'|cut-d"|"-f"2-4"|grep"|${value}|"|cut遲碼啟-d"|"-f"1"`
echo"它的子進程:"
echo"$wym"
這個可以找出所有的後代進程:通過遞歸調用本身函數。
read-p"輸入模渣一個進程號:"p
functionmj(){
pid=`ps-ef|sed's/*/|/g'|cut-d"|"-f2-3|grep"|$1$"`
forppidin$pid;do
num=`echo"$ppid"|sed"s/|$1//g"`
echo"$num"
mj$num
done
}
mj$p