❶ linux shell腳本的問題
1、第二個括弧不能換成其他的,中括弧,大括弧,雙中括弧,雙括弧都不可以,意思都不一樣。
2、:-是一起的;fileuser
如果有值的話,就用所擁有的值賦予給filename變數;無值的話,就把filenname賦予給fileuser,再賦予給filename變數
3、大括弧可以不要,大括弧里不做如何的參數變化可以捨去。
你最好修改下:
#!/bin/bash
read
-p
"please
you
nmae
"
fileuser
date=$(date
--date='2
day
ago'
+%Y%m%d)
filename=${fileuser:-"filename"}
file=$filename$date
touch
$file
這樣或許能更好體現出意義來
❷ shell中尖括弧的意義 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
不是尖括弧,是輸入輸出重定向符號。
< $@.$$$$
> $@
sed中的替換方法:
sed 's/str1/str2/' <oldfile >newfile
或
sed 's/str1/str2/' oldfile >newfile
❸ shell腳本中括弧()有什麼用
三種作用,根據上下文決定作用。
在條件表達式中作用類似c語言作用,單獨作用fork子shell,定義數組
❹ shell如何輸出大括弧
大括弧在shell中有特殊的意義,輸出一般需要轉義,
使用轉義字元\{ 或\} 就可以輸出大括弧
但有些地方不需要轉義,如果轉義會輸出前面的轉義字元。
是否需要轉義可以通過測試進行判斷。
❺ shell中的for為什麼兩個括弧
for loop 的語法有下列兩種:
(1)這個是shell的古典for的用法:
for varname [in word...]
do
...
done
舉例:
for i in a b c
do
echo $i
done
(2) 這個語法類似C/C++的用法,還有((...))在shell里是算數運算用:
for (( [init_expression];[loop_condition];[loop_expression] ))
do
...
done
舉例:
for ((i=0;i<5;i++))
do
echo $i
done
注意事項:這個for的用法只有在1988-11-16後的ksh才支援,所以有許多的Unix還不支援這個for的使用語法。例如HPUX或IBM的AIX。
❻ shell腳本主要有哪些
第一個shell腳本程序:
#!/bin/bash
# 上面中的 #! 是一種約定標記, 它可以告訴系統這個腳本需要什麼樣的解釋器來執行;echo "Hello, world!"
變數:
定義變數:
country="China"Number=100
注意: 1,變數名和等號之間不能有空格;
2,首個字元必須為字母(a-z,A-Z)。
3, 中間不能有空格,可以使用下劃線(_)。
4, 不能使用標點符號。
5, 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。
使用變數:
只需要在一個定義過的變數前面加上美元符號$就可以了, 另外,對於變數的{} 是可以選擇的, 它的目的為幫助解釋器識別變數的邊界.
country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"
#這個需要有{}的;
重定義變數:直接把變數重新像開始定義的那樣子賦值就可以了:
country="China"country="ribenguizi"
只讀變數: 用 readonly 命令 可以把變數字義為只讀變數。
readonly country="China"#或
country="China"readonly country
刪除變數: 使用unset命令可以刪除變數,但是不能刪除只讀的變數。用法:
unset variable_name
變數類型
運行shell時,會同時存在三種變數:
1) 局部變數
局部變數在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變數。
2) 環境變數
所有的程序,包括shell啟動的程序,都能訪問環境變數,有些程序需要環境變數來保證其正常運行。必要的時候shell腳本也可以定義環境變數。
3) shell變數
shell變數是由shell程序設置的特殊變數。shell變數中有一部分是環境變數,有一部分是局部變數,這些變數保證了shell的正常運行
特殊變數:

其中, 1. 取值後面必須為關鍵字 in,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最後。2. 如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。
❼ 請教shell腳本中的方括弧
shell腳本中的方括弧,類似於[]這樣的,相當於test命令。
也就是test命令的使用方法都適用 它。
❽ 關於shell腳本的幾個問題--if和產量替換 if的語法,中括弧後面有沒有分號變數替換字元串
if [ $asd == "asdasd" ];then
fi
這是標准語法
❾ shell腳本中中括弧不能用==號嗎
能。先看我的,我再解釋為什麼你遇到這樣的問題。
1)把下面的內容存為一個腳本文件,例如,我的a.sh如下(注意美元符$是系統提示符):
$ cat a.sh
#!/bin/bash
x=8
if [[ $x == 8 ]];then
echo 'yes'
else
echo 'no'
fi
2)給它加上執行許可權:
$ chmod +x a.sh
3)看我的運行結果,說明中括弧裡面能用==號:
$ ./a.sh
yes
4)注意雙等號的兩邊需要有空格,判別式與雙中括弧之間也需要空格。你可能沒加空格,遇到了錯誤。把你的代碼或者屏幕錯誤提示貼出來,大家就能更清晰地看到問題了。
供參考,謝謝!
❿ 請教會linux shell腳本的=~是什麼意思
應該是正則表達式的字元判斷
if [[ $i =~ ^[0-9]+$ ]] && echo 1
1、^是匹配字元串開始的意思,[0-9]只要不是數字都不要。
2、~ +的意思的^[0-9]的范圍里匹配一次以上+ $是匹配結束符。
touch -t "201109021200.00" tempfile
使用引號內的時間戳在當前目錄建立一個叫tempfile的文件
find -name "*VIRTUALID*" -newer tempfile -exec cp {} /home/wbft/luo ;

(10)shell腳本中的括弧擴展閱讀:
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。不僅如此,Shell有自己的編程語言用於對命令的編輯,它允許用戶編寫由shell命令組成的程序。
Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。