中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

營銷型企業(yè)網(wǎng)站制作公司軟文網(wǎng)站推廣法

營銷型企業(yè)網(wǎng)站制作公司,軟文網(wǎng)站推廣法,網(wǎng)站建設(shè)和優(yōu)化的好處,線上營銷工具1.shell語法 概論 概論 shell是我們通過命令行與操作系統(tǒng)溝通的語言。shell腳本可以直接在命令行中執(zhí)行,也可以將一套邏輯組織成一個文件,方便復(fù)用。 AC Terminal中的命令行可以看成是一個“shell腳本在逐行執(zhí)行”。Linux中常見的shell腳本有很多種&…

1.shell語法


概論

概論
shell是我們通過命令行與操作系統(tǒng)溝通的語言。shell腳本可以直接在命令行中執(zhí)行,也可以將一套邏輯組織成一個文件,方便復(fù)用。
AC Terminal中的命令行可以看成是一個“shell腳本在逐行執(zhí)行”。Linux中常見的shell腳本有很多種,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
zsh
…
Linux系統(tǒng)中一般默認使用bash,所以接下來講解bash中的語法。
文件開頭需要寫#! /bin/bash,指明bash為腳本解釋器。學習技巧
不要死記硬背,遇到含糊不清的地方,可以在AC Terminal里實際運行一遍。腳本示例
新建一個test.sh文件,內(nèi)容如下:#! /bin/bash
echo "Hello World!"
運行方式
作為可執(zhí)行文件acs@9e0ebfcd82d7:~$ chmod +x test.sh  # 使腳本具有可執(zhí)行權(quán)限
acs@9e0ebfcd82d7:~$ ./test.sh  # 當前路徑下執(zhí)行
Hello World!  # 腳本輸出
acs@9e0ebfcd82d7:~$ /home/acs/test.sh  # 絕對路徑下執(zhí)行
Hello World!  # 腳本輸出
acs@9e0ebfcd82d7:~$ ~/test.sh  # 家目錄路徑下執(zhí)行
Hello World!  # 腳本輸出
用解釋器執(zhí)行acs@9e0ebfcd82d7:~$ bash test.sh
Hello World!  # 腳本輸出

注釋

單行注釋
每行中#之后的內(nèi)容均是注釋。# 這是一行注釋echo 'Hello World'  #  這也是注釋
多行注釋
格式::<<EOF
第一行注釋
第二行注釋
第三行注釋
EOF
其中EOF可以換成其它任意字符串。例如::<<abc
第一行注釋
第二行注釋
第三行注釋
abc:<<!
第一行注釋
第二行注釋
第三行注釋
!

變量

定義變量
定義變量,不需要加$符號,例如:name1='yxc'  # 單引號定義字符串
name2="yxc"  # 雙引號定義字符串
name3=yxc    # 也可以不加引號,同樣表示字符串
使用變量
使用變量,需要加上$符號,或者${}符號。花括號是可選的,主要為了幫助解釋器識別變量邊界。name=yxc
echo $name  # 輸出yxc
echo ${name}  # 輸出yxc
echo ${name}acwing  # 輸出yxcacwing
只讀變量
使用readonly或者declare可以將變量變?yōu)橹蛔x。name=yxc
readonly name
declare -r name  # 兩種寫法均可name=abc  # 會報錯,因為此時name只讀
刪除變量
unset可以刪除變量。name=yxc
unset name
echo $name  # 輸出空行
變量類型
自定義變量(局部變量)
子進程不能訪問的變量
環(huán)境變量(全局變量)
子進程可以訪問的變量
自定義變量改成環(huán)境變量:acs@9e0ebfcd82d7:~$ name=yxc  # 定義變量
acs@9e0ebfcd82d7:~$ export name  # 第一種方法
acs@9e0ebfcd82d7:~$ declare -x name  # 第二種方法
環(huán)境變量改為自定義變量:acs@9e0ebfcd82d7:~$ export name=yxc  # 定義環(huán)境變量
acs@9e0ebfcd82d7:~$ declare +x name  # 改為自定義變量
字符串
字符串可以用單引號,也可以用雙引號,也可以不用引號。單引號與雙引號的區(qū)別:單引號中的內(nèi)容會原樣輸出,不會執(zhí)行、不會取變量;
雙引號中的內(nèi)容可以執(zhí)行、可以取變量;
name=yxc  # 不用引號
echo 'hello, $name \"hh\"'  # 單引號字符串,輸出 hello, $name \"hh\"
echo "hello, $name \"hh\""  # 雙引號字符串,輸出 hello, yxc "hh"
獲取字符串長度name="yxc"
echo ${#name}  # 輸出3
提取子串name="hello, yxc"
echo ${name:0:5}  # 提取從0開始的5個字符

默認變量

文件參數(shù)變量
在執(zhí)行shell腳本時,可以向腳本傳遞參數(shù)。$1是第一個參數(shù),$2是第二個參數(shù),以此類推。特殊的,$0是文件名(包含路徑)。例如:創(chuàng)建文件test.sh:#! /bin/bashecho "文件名:"$0
echo "第一個參數(shù):"$1
echo "第二個參數(shù):"$2
echo "第三個參數(shù):"$3
echo "第四個參數(shù):"$4
然后執(zhí)行該腳本:acs@9e0ebfcd82d7:~$ chmod +x test.sh 
acs@9e0ebfcd82d7:~$ ./test.sh 1 2 3 4
文件名:./test.sh
第一個參數(shù):1
第二個參數(shù):2
第三個參數(shù):3
第四個參數(shù):4
其它參數(shù)相關(guān)變量
參數(shù)	說明
$#	代表文件傳入的參數(shù)個數(shù),如上例中值為4
$*	由所有參數(shù)構(gòu)成的用空格隔開的字符串,如上例中值為"$1 $2 $3 $4"
$@	每個參數(shù)分別用雙引號括起來的字符串,如上例中值為"$1" "$2" "$3" "$4"
$$	腳本當前運行的進程ID
$?	上一條命令的退出狀態(tài)(注意不是stdout,而是exit code)。0表示正常退出,其他值表示錯誤
$(command)	返回command這條命令的stdout(可嵌套)
`command`	返回command這條命令的stdout(不可嵌套)


數(shù)組

數(shù)組中可以存放多個不同類型的值,只支持一維數(shù)組,初始化時不需要指明數(shù)組大小。
數(shù)組下標從0開始。定義
數(shù)組用小括號表示,元素之間用空格隔開。例如:array=(1 abc "def" yxc)
也可以直接定義數(shù)組中某個元素的值:array[0]=1
array[1]=abc
array[2]="def"
array[3]=yxc
讀取數(shù)組中某個元素的值
格式:${array[index]}
例如:array=(1 abc "def" yxc)
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}
讀取整個數(shù)組
格式:${array[@]}  # 第一種寫法
${array[*]}  # 第二種寫法
例如:array=(1 abc "def" yxc)echo ${array[@]}  # 第一種寫法
echo ${array[*]}  # 第二種寫法
數(shù)組長度
類似于字符串${#array[@]}  # 第一種寫法
${#array[*]}  # 第二種寫法
例如:array=(1 abc "def" yxc)echo ${#array[@]}  # 第一種寫法
echo ${#array[*]}  # 第二種寫法

expr命令

expr命令用于求表達式的值,格式為:expr 表達式
表達式說明:用空格隔開每一項
用反斜杠放在shell特定的字符前面(發(fā)現(xiàn)表達式運行錯誤時,可以試試轉(zhuǎn)義)
對包含空格和其他特殊字符的字符串要用引號括起來
expr會在stdout中輸出結(jié)果。如果為邏輯關(guān)系表達式,則結(jié)果為真時,stdout輸出1,否則輸出0。
expr的exit code:如果為邏輯關(guān)系表達式,則結(jié)果為真時,exit code為0,否則為1。
字符串表達式
length STRING
返回STRING的長度
index STRING CHARSET
CHARSET中任意單個字符在STRING中最前面的字符位置,下標從1開始。如果在STRING中完全不存在CHARSET中的字符,則返回0。
substr STRING POSITION LENGTH
返回STRING字符串中從POSITION開始,長度最大為LENGTH的子串。如果POSITION或LENGTH為負數(shù),0或非數(shù)值,則返回空字符串。
示例:str="Hello World!"echo `expr length "$str"`  # ``不是單引號,表示執(zhí)行該命令,輸出12
echo `expr index "$str" aWd`  # 輸出7,下標從1開始
echo `expr substr "$str" 2 3`  # 輸出 ell
整數(shù)表達式
expr支持普通的算術(shù)操作,算術(shù)表達式優(yōu)先級低于字符串表達式,高于邏輯關(guān)系表達式。+ -
加減運算。兩端參數(shù)會轉(zhuǎn)換為整數(shù),如果轉(zhuǎn)換失敗則報錯。* / %
乘,除,取模運算。兩端參數(shù)會轉(zhuǎn)換為整數(shù),如果轉(zhuǎn)換失敗則報錯。() 可以改變優(yōu)先級,但需要用反斜杠轉(zhuǎn)義示例:a=3
b=4echo `expr $a + $b`  # 輸出7
echo `expr $a - $b`  # 輸出-1
echo `expr $a \* $b`  # 輸出12,*需要轉(zhuǎn)義
echo `expr $a / $b`  # 輸出0,整除
echo `expr $a % $b` # 輸出3
echo `expr \( $a + 1 \) \* \( $b + 1 \)`  # 輸出20,值為(a + 1) * (b + 1)
邏輯關(guān)系表達式
|
如果第一個參數(shù)非空且非0,則返回第一個參數(shù)的值,否則返回第二個參數(shù)的值,但要求第二個參數(shù)的值也是非空或非0,否則返回0。如果第一個參數(shù)是非空或非0時,不會計算第二個參數(shù)。
&
如果兩個參數(shù)都非空且非0,則返回第一個參數(shù),否則返回0。如果第一個參為0或為空,則不會計算第二個參數(shù)。< <= = == != >= >
比較兩端的參數(shù),如果為true,則返回1,否則返回0。”==”是”=”的同義詞。”expr”首先嘗試將兩端參數(shù)轉(zhuǎn)換為整數(shù),并做算術(shù)比較,如果轉(zhuǎn)換失敗,則按字符集排序規(guī)則做字符比較。() 可以改變優(yōu)先級,但需要用反斜杠轉(zhuǎn)義
示例:a=3
b=4echo `expr $a \> $b`  # 輸出0,>需要轉(zhuǎn)義
echo `expr $a '<' $b`  # 輸出1,也可以將特殊字符用引號引起來
echo `expr $a '>=' $b`  # 輸出0
echo `expr $a \<\= $b`  # 輸出1c=0
d=5echo `expr $c \& $d`  # 輸出0
echo `expr $a \& $b`  # 輸出3
echo `expr $c \| $d`  # 輸出5
echo `expr $a \| $b`  # 輸出3

read命令

read命令用于從標準輸入中讀取單行數(shù)據(jù)。當讀到文件結(jié)束符時,exit code為1,否則為0。參數(shù)說明-p: 后面可以接提示信息
-t:后面跟秒數(shù),定義輸入字符的等待時間,超過等待時間后會自動忽略此命令
實例:acs@9e0ebfcd82d7:~$ read name  # 讀入name的值
acwing yxc  # 標準輸入
acs@9e0ebfcd82d7:~$ echo $name  # 輸出name的值
acwing yxc  #標準輸出
acs@9e0ebfcd82d7:~$ read -p "Please input your name: " -t 30 name  # 讀入name的值,等待時間30秒
Please input your name: acwing yxc  # 標準輸入
acs@9e0ebfcd82d7:~$ echo $name  # 輸出name的值
acwing yxc  # 標準輸出

echo命令

echo用于輸出字符串。命令格式:echo STRING
顯示普通字符串
echo "Hello AC Terminal"
echo Hello AC Terminal  # 引號可以省略
顯示轉(zhuǎn)義字符
echo "\"Hello AC Terminal\""  # 注意只能使用雙引號,如果使用單引號,則不轉(zhuǎn)義
echo \"Hello AC Terminal\"  # 也可以省略雙引號
顯示變量
name=yxc
echo "My name is $name"  # 輸出 My name is yxc
顯示換行
echo -e "Hi\n"  # -e 開啟轉(zhuǎn)義
echo "acwing"
輸出結(jié)果:Hiacwing
顯示不換行
echo -e "Hi \c" # -e 開啟轉(zhuǎn)義 \c 不換行
echo "acwing"
輸出結(jié)果:Hi acwing
顯示結(jié)果定向至文件
echo "Hello World" > output.txt  # 將內(nèi)容以覆蓋的方式輸出到output.txt中
原樣輸出字符串,不進行轉(zhuǎn)義或取變量(用單引號)
name=acwing
echo '$name\"'
輸出結(jié)果$name\"
顯示命令的執(zhí)行結(jié)果
echo `date`
輸出結(jié)果:Wed Sep 1 11:45:33 CST 2021

printf命令

printf命令用于格式化輸出,類似于C/C++中的printf函數(shù)。默認不會在字符串末尾添加換行符。命令格式:printf format-string [arguments...]
用法示例
腳本內(nèi)容:printf "%10d.\n" 123  # 占10位,右對齊
printf "%-10.2f.\n" 123.123321  # 占10位,保留2位小數(shù),左對齊
printf "My name is %s\n" "yxc"  # 格式化輸出字符串
printf "%d * %d = %d\n"  2 3 `expr 2 \* 3` # 表達式的值作為參數(shù)
輸出結(jié)果:123.
123.12    .
My name is yxc
2 * 3 = 6

test命令與判斷符號[]

邏輯運算符&&和||
&& 表示與,|| 表示或
二者具有短路原則:
expr1 && expr2:當expr1為假時,直接忽略expr2
expr1 || expr2:當expr1為真時,直接忽略expr2
表達式的exit code為0,表示真;為非零,表示假。(與C/C++中的定義相反)
test命令
在命令行中輸入man test,可以查看test命令的用法。test命令用于判斷文件類型,以及對變量做比較。test命令用exit code返回結(jié)果,而不是使用stdout。0表示真,非0表示假。例如:test 2 -lt 3  # 為真,返回值為0
echo $?  # 輸出上個命令的返回值,輸出0
acs@9e0ebfcd82d7:~$ ls  # 列出當前目錄下的所有文件
homework  output.txt  test.sh  tmp
acs@9e0ebfcd82d7:~$ test -e test.sh && echo "exist" || echo "Not exist"
exist  # test.sh 文件存在
acs@9e0ebfcd82d7:~$ test -e test2.sh && echo "exist" || echo "Not exist"
Not exist  # testh2.sh 文件不存在
文件類型判斷
命令格式:test -e filename  # 判斷文件是否存在
測試參數(shù)	代表意義
-e	文件是否存在
-f	是否為文件
-d	是否為目錄
文件權(quán)限判斷
命令格式:test -r filename  # 判斷文件是否可讀
測試參數(shù)	代表意義
-r	文件是否可讀
-w	文件是否可寫
-x	文件是否可執(zhí)行
-s	是否為非空文件
整數(shù)間的比較
命令格式:test $a -eq $b  # a是否等于b
測試參數(shù)	代表意義
-eq	a是否等于b
-ne	a是否不等于b
-gt	a是否大于b
-lt	a是否小于b
-ge	a是否大于等于b
-le	a是否小于等于b
字符串比較
測試參數(shù)	代表意義
test -z STRING	判斷STRING是否為空,如果為空,則返回true
test -n STRING	判斷STRING是否非空,如果非空,則返回true(-n可以省略)
test str1 == str2	判斷str1是否等于str2
test str1 != str2	判斷str1是否不等于str2
多重條件判定
命令格式:test -r filename -a -x filename
測試參數(shù)	代表意義
-a	兩條件是否同時成立
-o	兩條件是否至少一個成立
!	取反。如 test ! -x file,當file不可執(zhí)行時,返回true
判斷符號[]
[]與test用法幾乎一模一樣,更常用于if語句中。另外[[]]是[]的加強版,支持的特性更多。例如:[ 2 -lt 3 ]  # 為真,返回值為0
echo $?  # 輸出上個命令的返回值,輸出0
acs@9e0ebfcd82d7:~$ ls  # 列出當前目錄下的所有文件
homework  output.txt  test.sh  tmp
acs@9e0ebfcd82d7:~$ [ -e test.sh ] && echo "exist" || echo "Not exist"
exist  # test.sh 文件存在
acs@9e0ebfcd82d7:~$ [ -e test2.sh ] && echo "exist" || echo "Not exist"
Not exist  # testh2.sh 文件不存在
注意:[]內(nèi)的每一項都要用空格隔開
中括號內(nèi)的變量,最好用雙引號括起來
中括號內(nèi)的常數(shù),最好用單或雙引號括起來
例如:name="acwing yxc"
[ $name == "acwing yxc" ]  # 錯誤,等價于 [ acwing yxc == "acwing yxc" ],參數(shù)太多
[ "$name" == "acwing yxc" ]  # 正確

判斷語句

if…then形式
類似于C/C++中的if-else語句。單層if
命令格式:if condition
then語句1語句2...
fi
示例:a=3
b=4if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
thenecho ${a}在范圍內(nèi)
fi
輸出結(jié)果:3在范圍內(nèi)
單層if-else
命令格式if condition
then語句1語句2...
else語句1語句2...
fi
示例:a=3
b=4if ! [ "$a" -lt "$b" ]
thenecho ${a}不小于$
elseecho ${a}小于$
fi
輸出結(jié)果:3小于4
多層if-elif-elif-else
命令格式if condition
then語句1語句2...
elif condition
then語句1語句2...
elif condition
then語句1語句2
else語句1語句2...
fi
示例:a=4if [ $a -eq 1 ]
thenecho ${a}等于1
elif [ $a -eq 2 ]
thenecho ${a}等于2
elif [ $a -eq 3 ]
thenecho ${a}等于3
elseecho 其他
fi
輸出結(jié)果:其他
case…esac形式
類似于C/C++中的switch語句。命令格式case $變量名稱 in值1)語句1語句2...;;  # 類似于C/C++中的break值2)語句1語句2...;;*)  # 類似于C/C++中的default語句1語句2...;;
esac
示例:a=4case $a in1)echo ${a}等于1;;  2)echo ${a}等于2;;  3)                                                echo ${a}等于3;;  *)echo 其他;;  
esac
輸出結(jié)果:其他

循環(huán)語句

for…in…do…done
命令格式:for var in val1 val2 val3
do語句1語句2...
done
示例1,輸出a 2 cc,每個元素一行:for i in a 2 cc
doecho $i
done
示例2,輸出當前路徑下的所有文件名,每個文件名一行:for file in `ls`
doecho $file
done
示例3,輸出1-10for i in $(seq 1 10)
doecho $i
done
示例4,使用{1..10} 或者 {a..z}for i in {a..z}
doecho $i
done
for ((…;…;…)) do…done
命令格式:for ((expression; condition; expression))
do語句1語句2
done
示例,輸出1-10,每個數(shù)占一行:for ((i=1; i<=10; i++))
doecho $i
done
while…do…done循環(huán)
命令格式:while condition
do語句1語句2...
done
示例,文件結(jié)束符為Ctrl+d,輸入文件結(jié)束符后read指令返回false。while read name
doecho $name
done
until…do…done循環(huán)
當條件為真時結(jié)束。命令格式:until condition
do語句1語句2...
done
示例,當用戶輸入yes或者YES時結(jié)束,否則一直等待讀入。until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
doread -p "Please input yes/YES to stop this program: " word
done
break命令
跳出當前一層循環(huán),注意與C/C++不同的是:break不能跳出case語句。示例while read name
dofor ((i=1;i<=10;i++))docase $i in8)break;;*)echo $i;;esacdone
done
該示例每讀入非EOF的字符串,會輸出一遍1-7。
該程序可以輸入Ctrl+d文件結(jié)束符來結(jié)束,也可以直接用Ctrl+c殺掉該進程。continue命令
跳出當前循環(huán)。示例:for ((i=1;i<=10;i++))
doif [ `expr $i % 2` -eq 0 ]thencontinuefiecho $i
done
該程序輸出1-10中的所有奇數(shù)。死循環(huán)的處理方式
如果AC Terminal可以打開該程序,則輸入Ctrl+c即可。否則可以直接關(guān)閉進程:使用top命令找到進程的PID
輸入kill -9 PID即可關(guān)掉此進程

函數(shù)

bash中的函數(shù)類似于C/C++中的函數(shù),但return的返回值與C/C++不同,返回的是exit code,取值為0-255,0表示正常結(jié)束。如果想獲取函數(shù)的輸出結(jié)果,可以通過echo輸出到stdout中,然后通過$(function_name)來獲取stdout中的結(jié)果。函數(shù)的return值可以通過$?來獲取。命令格式:[function] func_name() {  # function關(guān)鍵字可以省略語句1語句2...
}
不獲取 return值和stdout值
示例func() {name=yxcecho "Hello $name"
}func
輸出結(jié)果:Hello yxc
獲取 return值和stdout值
不寫return時,默認return 0。示例func() {name=yxcecho "Hello $name"return 123
}output=$(func)
ret=$?echo "output = $output"
echo "return = $ret"
輸出結(jié)果:output = Hello yxc
return = 123
函數(shù)的輸入?yún)?shù)
在函數(shù)內(nèi),$1表示第一個輸入?yún)?shù),$2表示第二個輸入?yún)?shù),依此類推。注意:函數(shù)內(nèi)的$0仍然是文件名,而不是函數(shù)名。示例:func() {  # 遞歸計算 $1 + ($1 - 1) + ($1 - 2) + ... + 0word=""while [ "${word}" != 'y' ] && [ "${word}" != 'n' ]doread -p "要進入func($1)函數(shù)嗎?請輸入y/n:" worddoneif [ "$word" == 'n' ]thenecho 0return 0fi  if [ $1 -le 0 ] thenecho 0return 0fi  sum=$(func $(expr $1 - 1))echo $(expr $sum + $1)
}echo $(func 10)
輸出結(jié)果:55
函數(shù)內(nèi)的局部變量
可以在函數(shù)內(nèi)定義局部變量,作用范圍僅在當前函數(shù)內(nèi)。可以在遞歸函數(shù)中定義局部變量。命令格式:local 變量名=變量值
例如:#! /bin/bashfunc() {local name=yxcecho $name
}
funcecho $name
輸出結(jié)果:yxc第一行為函數(shù)內(nèi)的name變量,第二行為函數(shù)外調(diào)用name變量,會發(fā)現(xiàn)此時該變量不存在。

exit命令

exit命令用來退出當前shell進程,并返回一個退出狀態(tài);使用$?可以接收這個退出狀態(tài)。exit命令可以接受一個整數(shù)值作為參數(shù),代表退出狀態(tài)。如果不指定,默認狀態(tài)值是 0。exit退出狀態(tài)只能是一個介于 0~255 之間的整數(shù),其中只有 0 表示成功,其它值都表示失敗。示例:創(chuàng)建腳本test.sh,內(nèi)容如下:#! /bin/bashif [ $# -ne 1 ]  # 如果傳入?yún)?shù)個數(shù)等于1,則正常退出;否則非正常退出。
thenecho "arguments not valid"exit 1
elseecho "arguments valid"exit 0
fi
執(zhí)行該腳本:acs@9e0ebfcd82d7:~$ chmod +x test.sh 
acs@9e0ebfcd82d7:~$ ./test.sh acwing
arguments valid
acs@9e0ebfcd82d7:~$ echo $?  # 傳入一個參數(shù),則正常退出,exit code為0
0
acs@9e0ebfcd82d7:~$ ./test.sh 
arguments not valid
acs@9e0ebfcd82d7:~$ echo $?  # 傳入?yún)?shù)個數(shù)不是1,則非正常退出,exit code為1
1

文件重定向

每個進程默認打開3個文件描述符:stdin標準輸入,從命令行讀取數(shù)據(jù),文件描述符為0
stdout標準輸出,向命令行輸出數(shù)據(jù),文件描述符為1
stderr標準錯誤輸出,向命令行輸出數(shù)據(jù),文件描述符為2
可以用文件重定向?qū)⑦@三個文件重定向到其他文件中。重定向命令列表
命令	說明
command > file	將stdout重定向到file中
command < file	將stdin重定向到file中
command >> file	將stdout以追加方式重定向到file中
command n> file	將文件描述符n重定向到file中
command n>> file	將文件描述符n以追加方式重定向到file中
輸入和輸出重定向
echo -e "Hello \c" > output.txt  # 將stdout重定向到output.txt中
echo "World" >> output.txt  # 將字符串追加到output.txt中read str < output.txt  # 從output.txt中讀取字符串echo $str  # 輸出結(jié)果:Hello World
同時重定向stdin和stdout
創(chuàng)建bash腳本:#! /bin/bashread a
read becho $(expr "$a" + "$b")
創(chuàng)建input.txt,里面的內(nèi)容為:3
4
執(zhí)行命令:acs@9e0ebfcd82d7:~$ chmod +x test.sh  # 添加可執(zhí)行權(quán)限
acs@9e0ebfcd82d7:~$ ./test.sh < input.txt > output.txt  # 從input.txt中讀取內(nèi)容,將輸出寫入output.txt中
acs@9e0ebfcd82d7:~$ cat output.txt  # 查看output.txt中的內(nèi)容
7

引入外部腳本

類似于C/C++中的include操作,bash也可以引入其他文件中的代碼。語法格式:. filename  # 注意點和文件名之間有一個空格或source filename
示例
創(chuàng)建test1.sh,內(nèi)容為:#! /bin/bashname=yxc  # 定義變量name
然后創(chuàng)建test2.sh,內(nèi)容為:#! /bin/bashsource test1.sh # 或 . test1.shecho My name is: $name  # 可以使用test1.sh中的變量
執(zhí)行命令:acs@9e0ebfcd82d7:~$ chmod +x test2.sh 
acs@9e0ebfcd82d7:~$ ./test2.sh 
My name is: yxc

轉(zhuǎn)載自acwingyxc

http://www.risenshineclean.com/news/50538.html

相關(guān)文章:

  • 資陽住房和城鄉(xiāng)建設(shè)廳網(wǎng)站煙臺網(wǎng)站建設(shè)
  • 響應(yīng)式網(wǎng)站建設(shè)服務(wù)個人友情鏈接推廣
  • 副標題wordpressseo課程
  • 怎么做網(wǎng)絡(luò)推廣網(wǎng)站百度招聘電話
  • 如何做輸入密碼進入網(wǎng)站云盤搜索
  • 深圳 seo 外貿(mào)網(wǎng)站建設(shè) 多語種搜索率最高的關(guān)鍵詞
  • wordpress 網(wǎng)站加密友情鏈接可以幫助店鋪提高瀏覽量
  • 錫盟建設(shè)工程造價管理站網(wǎng)站凡科建站怎么建網(wǎng)站
  • 邢臺太行中學地址seo入門教程視頻
  • 濟南公司做網(wǎng)站貴州網(wǎng)站seo
  • 網(wǎng)站建設(shè)運營怎么辦seo網(wǎng)絡(luò)營銷推廣公司深圳
  • 學做電商網(wǎng)站設(shè)計app開發(fā)公司推薦
  • 陜西咸陽建設(shè)銀行網(wǎng)站百度域名提交收錄網(wǎng)址
  • wordpress 顯示瀏覽量為什么seo工資不高
  • 如何在自己網(wǎng)站上做支付寶公司做網(wǎng)站推廣
  • 做網(wǎng)站的屬于什么工作類型女教師遭網(wǎng)課入侵直播錄屏曝光視頻
  • wordpress去水印北京seo公司華網(wǎng)白帽
  • 鞏義企業(yè)網(wǎng)站托管服務(wù)商百度分析工具
  • 企業(yè)網(wǎng)站建設(shè)上海seo搜索引擎優(yōu)化方案
  • 深圳外貿(mào)網(wǎng)站優(yōu)化黃金網(wǎng)站app大全
  • django 網(wǎng)站開發(fā)視頻教程軟件開發(fā)網(wǎng)
  • 四川設(shè)計公司seo運營培訓(xùn)
  • 網(wǎng)站收錄了但是搜索不到軟文寫作
  • 臨平做網(wǎng)站鄭州seo顧問阿亮
  • 鄭州做網(wǎng)站云極品牌推廣公司
  • 軟件開發(fā)步驟及周期長沙優(yōu)化網(wǎng)站廠家
  • 韓國購物網(wǎng)站廣告素材
  • 宿州商務(wù)網(wǎng)站建設(shè)網(wǎng)站關(guān)鍵詞優(yōu)化有用嗎
  • java畢業(yè)設(shè)計網(wǎng)站建設(shè)培訓(xùn)網(wǎng)址大全
  • 公司建站比較好的金華網(wǎng)站建設(shè)