shell腳本參數
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1是傳遞給該shell腳本的第一個參數
$2是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
例如:
#!/bin/sh
echo "arg_num: $#"
echo "shell_name: $0"
echo "first_arg : $1"
echo "second_arg : $2"
echo "args : $@"
㈡ 如何給shell腳本傳參數
from:Linux命令行與shell腳本編程大全.第3版
向shell腳本傳遞數據的最基本方法是使用命令行參數。命令行參數允許在運行腳本時向命令行添加數據。
$ ./addem 10 30
本例向腳本addem傳遞了兩個命令行參數( 10和30)。腳本會通過特殊的變數來處理命令行參數。下面是在shell腳本中使用單個命令行參數的簡單例子。
$cattest1.sh
#!/bin/bash
#usingonecommandlineparameter
#
factorial=1
for((number=1;number<=$1;number++))
do
factorial=$[$factorial*$number]
done
echoThefactorialof$1is$factorial
$
$./test1.sh5
Thefactorialof5is120
$
㈢ 編寫一個shell腳本,讀入10個參數
樓上說的有點問題,只有$0~$9哦,沒有$10的。這些叫做位置參數,共10個位置參數。
$0表示腳本名稱本身,$1~$9分別表示9個參數,要想取第10個參數,必須用shift來移位。
shift (= shift 1), 即移一位。移位後$1就表示取第2個參數了。
shift 9後用$1就取到了第10個參數。
㈣ 執行SHELL腳本,傳入參數,參數應該被裡邊的sql所用,請問怎麼寫
變數在sh中用$1,$2,$3... 順序表示傳入的參數。
sql寫法:
select dept_id,dept_name from department
where dept_id=$1
㈤ shell 如何啟動另外一個腳本執行,並傳遞參數
子shell變數傳遞給父shell,中間可以保存個臨時文件讓父shell去讀。
下邊是一個子shell,傳遞給父shell的一個例子,僅做參考
#!/bin/bash
(
subvar="helloshell"
echo"$subvar">temp.txt
)
readpvar<temp.txt
echo$pvar
㈥ linux shell編程:shell 腳本參數問題!
關於參數傳遞:
假我要獲取/home某目錄text.txt文件某目錄我原先知道所需要先使用:
ls -l /home
獲取/home目錄信息
現需要ls -l /homels -l $filenamemore text.txt三命令寫同shell
該寫$filename傳遞
寫簡單程序
#!/bin/bash
i=0
while [$i]
do
echo "$i"
done
程序始報錯:
snytax error near unexpected token 'do'
並且管我寫任何內容要while控制語句報種錯誤
我程序問題linux問題
㈦ shell腳本中的$*,$@和$#
我沒用過$@,但是可以自己寫個腳本測試下。
先介紹下我知道的,如下:
位置變數 :$0,$1,$2,$3,$4,$5,$6,$7,$8,$9 $0顯示運行的腳本,$1...顯示位置參數的值
預定義變數:
$# 表示位置參數的數量
$* 表示所有位置參數的內容
$? 表示命令執行後返回的狀態 (執行成功 返回0 執行不成功 返回非0)
$$ 表示當前進程的進程號 希望打開一個進程後不再打開另一個(/proc/<PID>)
$! 表示後台運行的最後一個進程號
$0 表示當前的進程名
測試腳本如下:(位置變數只輸出到$3)
[root@XP-24-35 script]#vim a.sh
#!/bin/bash
echo '$0 ==> ' $0
echo '$1 ==> ' $1
echo '$2 ==> ' $2
echo '$3 ==> ' $3
echo '$$ ==> ' $$
echo '$* ==> ' $*
echo '$@ ==> ' $@
echo '$# ==> ' $#
echo '$? ==> ' $?
執行結果1(輸入小於三個位置參數a,b)
[root@XP-24-35 script]# ./a.sh a b
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==>
$$ ==> 4847
$* ==> a b
$@ ==> a b
$# ==> 2
$? ==> 0
執行結果2(剛好輸入三個位置參數)
[root@XP-24-35 script]# ./a.sh a b c
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==> c
$$ ==> 4844
$* ==> a b c
$@ ==> a b c
$# ==> 3
$? ==> 0
執行結果3(輸入大於3個位置參數)
[root@XP-24-35 script]# ./a.sh a b c d e f
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==> c
$$ ==> 4852
$* ==> a b c d e f
$@ ==> a b c d e f
$# ==> 6
$? ==> 0
實驗結果說明一切,忘採納,謝謝。
㈧ shell 腳本參數 路徑怎麼設置
linux系統除了提供位置參數還提供內置參數,內置參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID
㈨ linux shell腳本調用參數傳遞
三個選擇:
1)把參數寫進腳本,運行腳本時不帶參數。
2)使用互動式方法,運行時提示讓用戶手動輸入這些信息。
3)搜索「linux 隱藏進程」。
如果你的用戶名密碼是用於登錄的話,改用密鑰好了:
http://..com/question/324853297.html
㈩ 怎麼寫一個shell腳本傳入參數
echo第1個參數為$1
echo第9個參數為$9
echo第11個參數為${11}
forpin"$@";do
echo$p
done
forp;do
echo$p
done