shell 要用${a%*" "}的方式為什么沒用
- 資格考試
- 2023-02-20 07:56:08
shell腳本 ${a%%.*} 什么意思?
返回把 a 的值刪掉匹配 .* 的后綴后的值。 比如 a=my.txt echo ${a%%.*} 或者 a=my.txt.1 echo ${a%%.*} 都會(huì)打印 myshell腳本中的$*,$@和$
#舉例說: 腳本名稱叫test.sh 入?yún)⑷齻€(gè): 1 2 3 運(yùn)行test.sh 1 2 3后 $*為"1 2 3"(一起被引號(hào)包?。?$@為"1" "2" "3"(分別被包?。?$#為3(參數(shù)數(shù)量)我用shell腳本編程,有兩個(gè)問題:
1 可以用grep去搜索你要的內(nèi)容,grep “你要搜索的關(guān)鍵字” output.txt 如果是一段連續(xù)內(nèi)容的話,sed命令,比如sed -n '3,6p' output.txt 就是打印output.txt文本中的3到6行的內(nèi)容。 2 你是要保留數(shù)字部分么? #!/bin/bash a=$1 a=${a%%[^0-9]*} echo $ashell中的$取變量操作
1,echo $A只是輸出變量的值而已,其中的轉(zhuǎn)義字符(如\n)需要在雙引號(hào)中才能生效 所以輸出會(huì)不一樣,一個(gè)是有轉(zhuǎn)義字符的,一個(gè)是沒有轉(zhuǎn)義字符的 2,你寫的兩條命令是等價(jià)的,但是 echo "${te}mp"和echo "$temp"則不等價(jià)了,這既是這種參數(shù)擴(kuò)展的用處 加入 te = a; temp=b; 那么: ${te}mp=amp; $temp=b; 所以echo "${te}mp"結(jié)果是amp 而echo $temp結(jié)果是b; 這樣說能明白嗎?舉個(gè)例子,如果你要批量給.jpg的文件命名,如果直接使用$temp.jpg那么就會(huì)有問題,因?yàn)檫@時(shí)候取的是temp.jpg看成一個(gè)變量,所以為什么這樣用shell不行啊
問題分析: Shell 函數(shù)只能運(yùn)行一個(gè)可執(zhí)行程序,如exe文件。"水邊的阿狄麗娜.wma"是一個(gè)音樂文件,不能直接被shell打開,但可以用一個(gè)支持該音樂格式的播放器來打開,如Windows Media Player(默認(rèn)安裝在"C:\Program Files\Windows Media Player"目錄下)。 解決辦法一: 根據(jù)上面分析,你可以指定用WindowsMediaPlayer來打開你的這個(gè)音樂文件,代碼修改如下: Private Sub Form_Load() a = "C:\Program Files\Windows Media Player\wmplayer.exe "展開全文閱讀