日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

shell中变量的取值与赋值

發(fā)布時(shí)間:2025/5/22 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell中变量的取值与赋值 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

取值是很簡(jiǎn)單的,例如var=bbb,那么${var}ccc的結(jié)果就是bbbccc,在包含字符串的時(shí)候要用到三種引號(hào),分別是單引號(hào)、雙引號(hào)和反引號(hào),現(xiàn)來(lái)一一討論

一、整體引用

  • mv?"a?~file?name.txt"?another.txt?
  • 在這種情況下,單雙引號(hào)是沒(méi)有什么區(qū)別,它們的意義相同。

    二、變量替換

  • echo?"The?value?of?'${var}'?is?${var}".?
  • 在這種情況下,當(dāng)一個(gè)變量被用在雙引號(hào)括起來(lái)的句子里面的時(shí)候,它會(huì)被替換成它的內(nèi)容;而當(dāng)使用單引號(hào)的時(shí)候,變量替換則不會(huì)發(fā)生。所以可以說(shuō)單引號(hào)是更強(qiáng)的引用。像上面那個(gè)例子的輸出結(jié)果為:

  • The?value?of?'${var}'?is?bbb.?
  • 三、命令替換

  • var='uname?-r'?
  • 這樣,變量$var的值就是命令uname -r的輸出。

    比變量替換更高級(jí)的是匹配,例如:${f%jpg}是用jpg對(duì)變量f從后面開(kāi)始進(jìn)行匹配,并把匹配上的部分(也就是擴(kuò)展名)去掉,同時(shí)使用兩個(gè)百分號(hào)的時(shí)候,表示使用了最大匹配方式,比如"abcdabcd",在用a*d匹配的時(shí)候,如果是最大匹配,就會(huì)匹配所有8個(gè)字符,而用最小匹配的時(shí)候則會(huì)匹配4個(gè)。與百分號(hào)相對(duì)應(yīng),也可以使用"#"來(lái)對(duì)變量進(jìn)行從前向后的匹配,同樣也可以用兩個(gè)來(lái)表示最大匹配。

    來(lái)看個(gè)例子

  • #!/bin/bash ?
  • for?var?in?*.sh ?
  • do ?
  • echo?"${var%sh}" ?
  • done ?
  • 結(jié)果如下

  • test1. ?
  • test2. ?
  • test3. ?
  • test. ?
  • 看到了后綴都沒(méi)有了,可以用以修改后綴名

  • #!/bin/bash ?
  • for?var?in?*.sh ?
  • do ?
  • mv?"${var}" "${var%sh}SH" ?
  • done ?
  • 這樣小寫(xiě)的sh就變成大寫(xiě)的了。

    寫(xiě)個(gè)簡(jiǎn)單的循環(huán)替換

  • grep?-v?"^#"?/etc/passwd?|\ ?
  • while?read?i ?
  • do ?
  • echo?${i%%:*} ?
  • done?
  • 第一行:-v是取反的意思,"^#"是取開(kāi)頭非#的行,最后的"\",如果將以上代碼直接寫(xiě)成一個(gè)文件那么最后那個(gè)反斜杠可以不要,但是在shell窗口中一行一行的寫(xiě)那么反斜杠是必須加上的,它會(huì)告訴編譯器還沒(méi)有結(jié)束。

    第四行:%%:*意思是從最后到":"進(jìn)行最大匹配,這樣就只剩下第一個(gè)":"號(hào)以前的內(nèi)容了,看看結(jié)果

    替換前

  • sucre@sucre-ubuntu:~$?cat?/etc/passwd ?
  • root:x:0:0:root:/root:/bin/bash ?
  • daemon:x:1:1:daemon:/usr/sbin:/bin/sh ?
  • bin:x:2:2:bin:/bin:/bin/sh ?
  • sys:x:3:3:sys:/dev:/bin/sh ?
  • sync:x:4:65534:sync:/bin:/bin/sync ?
  • games:x:5:60:games:/usr/games:/bin/sh ?
  • man:x:6:12:man:/var/cache/man:/bin/sh ?
  • lp:x:7:7:lp:/var/spool/lpd:/bin/sh ?
  • mail:x:8:8:mail:/var/mail:/bin/sh ?
  • news:x:9:9:news:/var/spool/news:/bin/sh ?
  • uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh ?
  • proxy:x:13:13:proxy:/bin:/bin/sh ?
  • www-data:x:33:33:www-data:/var/www:/bin/sh ?
  • backup:x:34:34:backup:/var/backups:/bin/sh ?
  • list:x:38:38:Mailing?List?Manager:/var/list:/bin/sh ?
  • irc:x:39:39:ircd:/var/run/ircd:/bin/sh ?
  • gnats:x:41:41:Gnats?Bug-Reporting?System?(admin):/var/lib/gnats:/bin/sh ?
  • nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ?
  • libuuid:x:100:101::/var/lib/libuuid:/bin/sh ?
  • syslog:x:101:103::/home/syslog:/bin/false ?
  • messagebus:x:102:107::/var/run/dbus:/bin/false ?
  • avahi-autoipd:x:103:110:Avahi?autoip?daemon,,,:/var/lib/avahi-autoipd:/bin/false ?
  • avahi:x:104:111:Avahi?mDNS?daemon,,,:/var/run/avahi-daemon:/bin/false ?
  • couchdb:x:105:113:CouchDB?Administrator,,,:/var/lib/couchdb:/bin/bash ?
  • speech-dispatcher:x:106:29:Speech?Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh ?
  • usbmux:x:107:46:usbmux?daemon,,,:/home/usbmux:/bin/false ?
  • haldaemon:x:108:114:Hardware?abstraction?layer,,,:/var/run/hald:/bin/false ?
  • kernoops:x:109:65534:Kernel?Oops?Tracking?Daemon,,,:/:/bin/false ?
  • pulse:x:110:115:PulseAudio?daemon,,,:/var/run/pulse:/bin/false ?
  • rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false ?
  • saned:x:112:118::/home/saned:/bin/false ?
  • hplip:x:113:7:HPLIP?system?user,,,:/var/run/hplip:/bin/false ?
  • gdm:x:114:120:Gnome?Display?Manager:/var/lib/gdm:/bin/false ?
  • sucre:x:1000:1000:sucre,,,:/home/sucre:/bin/bash ?
  • sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin ?
  • 替換后

  • one ?
  • root ?
  • daemon ?
  • bin ?
  • sys ?
  • sync ?
  • games ?
  • man ?
  • lp ?
  • mail ?
  • news ?
  • uucp ?
  • proxy ?
  • www-data ?
  • backup ?
  • list ?
  • irc ?
  • gnats ?
  • nobody ?
  • libuuid ?
  • syslog ?
  • messagebus ?
  • avahi-autoipd ?
  • avahi ?
  • couchdb ?
  • speech-dispatcher ?
  • usbmux ?
  • haldaemon ?
  • kernoops ?
  • pulse ?
  • rtkit ?
  • saned ?
  • hplip ?
  • gdm ?
  • sucre ?
  • sshd ?
  • 看到了吧,效率還行吧。


    本文轉(zhuǎn)自sucre03 51CTO博客,原文鏈接:http://blog.51cto.com/sucre/386442,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

    總結(jié)

    以上是生活随笔為你收集整理的shell中变量的取值与赋值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。