2020年7月5日 星期日

bookmark : shell script 中的各種括號..

為避免這摸好的說明不見,所以轉貼一下.. (其實就是 copy 人家的內容...)

雙 (( 用在運算上..
((var++))
((var = 3))
for ((i = 0; i < VAL; i++))
echo $((var + 2))
用說括號 (( 刮起來的變數,不必加 $

方括號 [ 用在判斷
$ VAR=2
$ if [ $VAR -eq 2 ]
> then
> echo 'yes'
> fi
yes

接著的這個說明我不了解...
兩格個方括號用在 ? extended function ? 在regular expression 的 =~ 上使用.
$ VAR='some string'
$ if [[ $VAR =~ [a-z] ]]; then
> echo 'is alphabetic'
> fi
is alphabetic

大括號 { 用在區分變數名稱
$ foo='stage'
$ echo $fooone
           ... returns empty line
$ echo ${foo}one
stageone
大括號同時還有處理變數內容的功能..
$ var="abcdefg"; echo ${var%d*}
abc

程式輸出轉為變數

其實這跟一般shell script call shell command (ls. find ..etc) 然後處理輸出是一樣的。
不會因為是自己寫的程式而有不同,無腦的example 來看一下...
echo10.c:
#include <stdio.h>

int main()
{
 printf("%d",10);

 return 0;
}
然後 shell script 吃這個輸出..
#!/bin/bash

LOOPEND=$(./echo10)
echo "LOOPEND: ${LOOPEND}"

i=1
while [[ $i -le $LOOPEND ]]
do
 echo "$i"
 ((i = i + 1))
done
就很直覺使用..

反而是括號使用有點...參考一下..