其他討論區 > 課後溫習+認證考試

shell 展開 再展開

(1/2) > >>

小徒兒:
shell 要執行時,會先對特定的東東作展開的動作

1. wildcard
2. alias
3. metacharacter
4. IF ENDIF CASE ESAC WHILE
5. 重導向符號 | , >>, >, <
6. 變數 $PATH
7. S()
8. shell script,function, built-in command,executable file

小徒兒:
變一:
--------------------------------
$vi move


--- 代碼: ---
for file in $*
do
     mv $file $file.x
done


--- 程式碼結尾 ---


$ls
ch01 ch02 ch03 move
$move ch??
$ls
ch01.x ch02.x ch03.x move

--------------------------

變二:



--- 代碼: ---
for nn in $*
do
          mv ch$nn sect$nn
done


--- 程式碼結尾 ---


$ls
ch01 ch02 ch03 move
$move 01 02 03
$ls
sect01 sect02 sect03 move

----------------------------------------------------

變三:


--- 代碼: ---for variable in `grep -l "alcuin" *`
--- 程式碼結尾 ---






 :wink: 以上

netman:
要更好的理解 shell 的多重替換及重組, 最好了解一下 eval 命令.

如:
$ a=b
$ b=c
$ eval var=\$$a #註一
$ echo $var
c

# 註一:
關於 \ (escape) 可參考:
http://bbs.chinaunix.net/forum/viewtopic.php?p=1511745#1511745

小徒兒:
# Remove .o files.
alias clean='find ~ -name \*.o -exec rm {} \;'

小徒兒:
$@ 代表所有引數
$* 代表所有引數
$# 代表引數個數
$? 代表傳回值
$$ Process ID.
$0 Command name. 命令名稱
$n nth argument 第幾個引數 (0<n9).
$xxx 變數xxx的值

${xxx} 也是變數xxx的值,只是這樣定義較明確 (註一)
${xxx=ooo} 也是變數xxx的值

$() 命令的先執行後替換 例: ls -l $(type -path cc)
$(()) 數學的運算 例: $((2537%1000))




--- 引用 ---小徒註一:

如果在 ${} 裡有 : 的符號,代表在作字串的處理
如果在 ${} 裡有 # 或 % 或 / 的符號,代表在作字串的比對及切割


--- 引用結尾 ---

導覽

[0] 文章列表

[#] 下頁

前往完整版本