久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Shell腳本應(yīng)用(一)

 行者花雕 2022-05-22 發(fā)布于北京
shell腳本執(zhí)行方式:
Linux中shell腳本的執(zhí)行通常有4種方式,,分別為工作目錄執(zhí)行,,絕對(duì)路徑執(zhí)行,sh執(zhí)行,,shell環(huán)境執(zhí)行,。
首先,看下我們的腳本內(nèi)容
[tan@tan scripts]$ ll
total 4
-rw-rw-r--. 1 tan tan 68 May  8 23:18 test.sh
[tan@tan scripts]$ cat test.sh
#!/usr/bin/bash

/usr/bin/python <<-EOF
print "Hello Shell"
        EOF
1,、工作目錄執(zhí)行
工作目錄執(zhí)行,,指的是執(zhí)行腳本時(shí),先進(jìn)入到腳本所在的目錄(此時(shí),,稱為工作目錄),,然后使用 ./腳本方式執(zhí)行
[tan@tan scripts]$ ./test.sh
-bash: ./test.sh: Permission denied
[tan@tan scripts]$ chmod 764 test.sh
[tan@tan scripts]$ ./test.sh
Hello Shell
如圖,報(bào)了權(quán)限錯(cuò)誤,,這里需要賦權(quán),,使用chmod 764 test.sh 賦權(quán)后就可以正常執(zhí)行了
./的意思是說(shuō)在當(dāng)前的工作目錄下執(zhí)行hello.sh。如果不加上./,,bash可能會(huì)響應(yīng)找到不到hello.sh的錯(cuò)誤信息,。因?yàn)槟壳暗墓ぷ髂夸?(/data/shell)可能不在執(zhí)行程序默認(rèn)的搜索路徑之列,也就是說(shuō),不在環(huán)境變量PASH的內(nèi)容之中,。查看PATH的內(nèi)容可用 echo $PASH 命令?,F(xiàn)在的/data/shell就不在環(huán)境變量PASH中的,所以必須加上./才可執(zhí)行,。
2,、絕對(duì)路徑執(zhí)行
絕對(duì)路徑中執(zhí)行,指的是直接從根目錄/到腳本目錄的絕對(duì)路徑
[tan@tan scripts]$ pwd
/home/tan/scripts
[tan@tan scripts]$ `pwd`/test.sh
Hello Shell
[tan@tan scripts]$ /home/tan/scripts/test.sh
Hello Shell
這里 `pwd` 指的是該命令執(zhí)行結(jié)果,,等同于 /home/tan/scripts
3,、sh執(zhí)行
sh執(zhí)行,指的是用腳本對(duì)應(yīng)的sh或bash來(lái)接著腳本執(zhí)行
[tan@tan scripts]$ sh test.sh
Hello Shell
[tan@tan scripts]$ bash test.sh
Hello Shell
注意,,若是以方法三的方式來(lái)執(zhí)行,,那么,可以不必事先設(shè)定shell的執(zhí)行權(quán)限,,甚至都不用寫shell文件中的第一行(指定bash路徑),。因?yàn)榉椒ㄈ?是將hello.sh作為參數(shù)傳給sh(bash)命令來(lái)執(zhí)行的。這時(shí)不是hello.sh自己來(lái)執(zhí)行,,而是被人家調(diào)用執(zhí)行,,所以不要執(zhí)行權(quán)限,。那么不用 指定bash路徑自然也好理解了啊,呵呵……,。
4,、shell環(huán)境執(zhí)行
shell環(huán)境執(zhí)行,指的是在當(dāng)前的shell環(huán)境中執(zhí)行,,可以使用 . 接腳本 或 source 接腳本
[tan@tan scripts]$ . test.sh
Hello Shell
[tan@tan scripts]$ source test.sh
Hello Shell
 
注釋:“./”,、sh、bash是相同的執(zhí)行方式,,“.”和source是相同的
source和“.”執(zhí)行腳本時(shí),,將腳本中語(yǔ)句在本shell中執(zhí)行,
sh,、bash和./是在執(zhí)行腳本時(shí)先啟動(dòng)一個(gè)新的shell,然后讓腳本中的語(yǔ)句在新的shell中執(zhí)行,,執(zhí)行完后就退出,。
 
二:重定向與管道操作
1、重定向
    程序 = 指令(命令) + 數(shù)據(jù)(變量)
    在程序中,,數(shù)據(jù)如何輸入和輸出
   1) 數(shù)據(jù)輸入:鍵盤 -- 標(biāo)準(zhǔn)輸入,,但是不是唯一輸入方式
        echo "123456" | passwd --stdin "username"      //輸入密碼
        ./useradd.sh< user.txt        //把user.txt中文件重定向到useradd.sh中
   2) 數(shù)據(jù)輸出:顯示器--標(biāo)準(zhǔn)輸出,但是不是惟一的輸出方式,。
        ls /etc/ > a.txt
        fd文件標(biāo)識(shí)符0-9:相當(dāng)于給文件分類
       0:標(biāo)準(zhǔn)輸出
       1:標(biāo)準(zhǔn)輸入
       2:錯(cuò)誤輸入輸出
常見重定向符號(hào):
  1)標(biāo)準(zhǔn)輸出
    >       覆蓋重定向
    set -C  關(guān)閉覆蓋重定向的功能   set +C:恢復(fù)
    >|    強(qiáng)制重定向    
    >>      追加重定向
  2)標(biāo)準(zhǔn)輸入
    <     a<b   :把b交給a執(zhí)行
    << 追加輸入
  3)錯(cuò)誤輸出
    2>  2>>
    擴(kuò)展:不需要輸出內(nèi)容,,只需要輸出狀態(tài);
    echo $?  :判斷上一條命令是否正確(0正確,,1-255其他都不正確)
2,、管道符 ( | )
|  前一個(gè)命令的執(zhí)行結(jié)果交給后一個(gè)命令來(lái)執(zhí)行
二、Shell變量
使用shell變量
shell變量不區(qū)分類型,,如果要指定變量類型也可用declare定義,。
環(huán)境變量
1)所有環(huán)境變量都是系統(tǒng)全局變量,可以用于所有子進(jìn)程中,。
2)環(huán)境變量用export導(dǎo)出,,但如果不寫入指定配置文件(~/.bash_profile,~/.bash,/etc/bashrc,/etc/profile),退出命令行會(huì)丟失,。
3)環(huán)境變量應(yīng)使用大寫,。
顯示環(huán)境變量:
set:輸出所有變量,包括全局變量,、局部變量,。
env:顯示環(huán)境變量。
declare:所有變量,,函數(shù),,整數(shù)等,。
set -o:所有參數(shù)配置信息。
unset消除本地變量和環(huán)境變量:
unset JAVA_
1.通過(guò)系統(tǒng)用戶登錄時(shí)的流程:
2.非登錄Shell
 只會(huì)加載~/.bashrc或者/etc/bashrc
 普通變量
定義本地變量
1 var_name1=12345                           #為連續(xù)內(nèi)容無(wú)需解析其他變量時(shí)可不用引號(hào)
2 var_name2='Do you have time.'             #用單引號(hào),,原樣輸出
3 var_name3="No, I'm working."              #會(huì)對(duì)其中變量進(jìn)行解析,,其他同單引號(hào)
4 var_name4=`ls -alh`                       #獲取命令結(jié)果
5 var_name5=$(ls -l)                        #同上
特殊位置參數(shù)變量
常用特殊位置參數(shù)說(shuō)明:
 
 
進(jìn)程中的特殊狀態(tài)變量:
 
進(jìn)程中的特殊狀態(tài)變量:
 
 
用法:
1)判斷命令、腳本和函數(shù)是否執(zhí)行成功
2)執(zhí)行" exit 數(shù)字 " ,會(huì)返回?cái)?shù)字給$?
3)在函數(shù)中" return 數(shù)字 ",效果同上
bash shell系統(tǒng)內(nèi)置變量命令:
1)echo:在屏幕上輸出變量  命令格式 echo args  其中arges可以是變量和字符串組合
2)eval: 
命令格式:eval args
功能:當(dāng)shell程序執(zhí)行到eval語(yǔ)句時(shí),,shell讀入?yún)?shù)args,,并將它們組合成一個(gè)新的命令。
3)exec:
命令格式: exec 命令參數(shù)
功能:在不創(chuàng)建新的子進(jìn)程前提下,,轉(zhuǎn)去執(zhí)行指定的命令,,指定命令執(zhí)行完畢后,終結(jié)該進(jìn)程,。
4)read:
命令格式: read  [參數(shù)] [變量名](該變量不能為特殊變量)
功能:從標(biāo)準(zhǔn)輸入讀取字符串等信息,,傳給shell內(nèi)部定義的變量。
1 read -t 10 -p 'Pls input the num: ' num
5)shilft:
命令格式:shilft—Shilft positional parameters
功能:在程序中每使用一次shilft語(yǔ)句,,都會(huì)使所有位置參數(shù)向左移動(dòng)一個(gè)位置,。
6)exit:
退出shell,可選定一個(gè)數(shù)字作為返回值,。
 五)變量子串
 
 
 
六)特殊擴(kuò)展變量
 
 
 
三,、變量的數(shù)值計(jì)算
一)算術(shù)運(yùn)算符
**:冪運(yùn)算       其他略
二)算術(shù)運(yùn)算命令
 
 
 
變量名稱的規(guī)范
變量名不能用數(shù)字開頭
變量名中不能有小數(shù)點(diǎn)
變量名不能用純數(shù)字
變量名可以是字母開頭再加數(shù)字
變量名中不能有斜杠“/”、“$”,、“#”,、“@”等特殊符號(hào)
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多