當前位置:首頁 » 編程軟體 » shell腳本運算

shell腳本運算

發布時間: 2022-07-28 19:12:45

⑴ 1.linux系統下shell腳本用case語句編寫四則運算 2.linux系統下shell腳本輸入數字串。進行反序輸出

如果只做四個簡單的運算這應應該可以

shell腳本代碼如下:
#!/bin/bash
read -p "input num1:" a
read -p "input num2:" b
read -p "input operator:" o
case $o in
+) let "res=a + b"
echo $res;;
-) let "res=a - b"
echo $res;;
/) awk 'BEGIN{printf "%.2f\n",'$a'/'$b'}';;
*) let "res=a * b"
echo $res;;
esac

⑵ shell中如何按位運算

語法
$((...))

$ echo $(( 3 * 4 )) 12

在某些場景特別方便,可以免去寫程序的煩瑣,如驗證某些運算。
下面是驗證《深入理解計算系統》練習題2.12的場景

表達式 ~0 將生成一個全1的掩碼,不管機器的字大小是多少,可移植。

$ printf "%x\n" $(( ~0 ))ffffffffffffffff
$ printf "%#x\n" $(( ~0 ))0xffffffffffffffff

上面的測試顯示,shell中,0按位取反後的值是64位的。
shell的printf命令前導字元列印:《shell腳本學習指南》表7-4:printf的標志中描述了格式參數中"#"號的意義,"#"可以用以輸出前導"0x"(16進制)、"0"(8進制)

x & 0xFF 生成一個由x的最低有效位元組組成的值
$ printf "%#x\n" $(( 0x89ABCDEF & 0xFF ))0xef
$ printf "%#.8x\n" $(( 0x89ABCDEF & 0xFF ))0x000000ef

以下x = 0x87654321
A.x的最低有效位元組,其他位均置為0
$ printf "%#.8x\n" $(( 0x87654321 & 0xFF )) 0x00000021
$ printf "%#.8x\n" $(( 0x87654321 & ?0xFF ))-bash: 0x87654321 & ?0xFF : syntax error: operand expected (error token is "?0xFF ")
書中給出的練習題的答案是 「x & ?0xFF」,這里的"?"號經驗證,shell無法正確運行。

B.除了x的最低有效位元組外,其他的位置都取補,最低有效位元組保持不變。
$ printf "%#x" $(( 0x87654321 ^ ~0xff))0xffffffff789abc21

上面因為~0xff會生成64位的掩碼,所以結果有些不符合預期,但後32位是符合預期的。
C.x的最低有效位元組設置成全1,其他位元組都保持不變。
$ printf "%#x" $(( 0x87654321 | 0xff ))0x876543ff

⑶ 關於shell腳本語言中的運算問題!我想問一下i=43 echo $[i++] 則顯示43為什麼

shell本身就是個命令解釋器
,不會編譯成機器碼

命令解釋器這個名字就能解釋你的問題了
"命令解釋器用什麼把
1++
算成2的"
我覺得你鑽牛角尖了,
這是個黑箱
,shell作為命令解釋器的存在,對各種輸入都有對應的解釋方式
,至於具體如何實現,那要看shell的源碼了,
這是個黑箱情況
你的問題就好像c編譯器如何識別
i++的
一樣,只是不同的是
c編譯器將i++生成機器碼
,而shell內建$i++的處理方式

⑷ 怎麼用shell編寫計算1+2+3…+n

shell腳本部分:

ojbk

⑸ 如何做一個邏輯或運算的SHELL腳本

我試圖做一個簡單的狀態檢查,但它似乎並沒有工作。 如果$#等於0或大於1然後打個招呼。 我曾嘗試以下語法沒有
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
編輯:我這是bash的。
本文地址 :CodeGo.net/215809/
-------------------------------------------------------------------------------------------------------------------------
1. 這應該工作確定。
if [ "$#" == 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
我不知道這是在其他shell不同,但如果你想<,>,你需要把它們的雙括弧裡面,像這樣:
if (("$#" > 1))
...

2. 此代碼工作
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
我不認為SH支持「==」。使用「=」字元串和當量整數。
man test
更多的細節。
3. 你有沒有試過這樣的:
if [ $# -eq 0 ] || [ $# -gt 1 ]
then
echo "$#"
fi

⑹ 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 腳本里的變數怎麼加1

shell 腳本里變數加一方式如下六種:

1、第一種整型變數自增方式

a=$(($a+1))

echo$a

2、第二種整型變數自增方式

a=$[$a+1]

echo$a

3、第三種整型變數自增方式

a=`expr$a+1`

echo$a

4、第四種整型變數自增方式

leta++

echo$a

5、第五種整型變數自增方式

leta+=1

echo$a

6、第六種整型變數自增方式

((a++))

echo$a

(7)shell腳本運算擴展閱讀:

基本上shell分兩大類:

1、圖形界面shell(Graphical User Interface shell 即 GUI shell)

應用最為廣泛的 Windows Explorer (微軟的windows系列操作系統),還有也包括廣為人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的CDE、GNOME、KDE、 XFCE。

2、命令行式shell(Command Line Interface shell ,即CLI shell)

bash / sh / ksh / csh / zsh(Unix/linux 系統),cmd.exe/ 命令提示字元(Windows NT 系統),Windows PowerShell(支持 .NET Framework 技術的 Windows NT 系統),傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。

⑻ shell腳本計算時間

TIME_INPUT=`date -d "00:00" +%s`
通過時間戳來計算
nowtime=`date +%s`
shijiancha=`expr $nowtime - $TIME_INPUT`
if [ $shijiancha -gt 180 ];then
echo 3分鍾前

else
if [ $shijiancha -lt -180 ];then

echo 3分鍾後

fi

fi

⑼ shell腳本中如何處理浮點運算

$ echo "scale=3; 1/13" | bc
.076
$ echo "1 13" | awk '{printf("%0.3f\n",$1/$2)}'
0.077

熱點內容
linux安全運維 發布:2025-02-07 11:14:19 瀏覽:734
阿里雲集群伺服器 發布:2025-02-07 11:12:38 瀏覽:451
如何選擇家庭最佳配置 發布:2025-02-07 11:06:50 瀏覽:87
javatomcat伺服器搭建伺服器 發布:2025-02-07 10:55:22 瀏覽:622
vcenter存儲器集群 發布:2025-02-07 10:54:31 瀏覽:583
咖啡的腳本 發布:2025-02-07 10:46:18 瀏覽:521
nsftp速度 發布:2025-02-07 10:30:58 瀏覽:431
存儲過程ifor 發布:2025-02-07 10:25:28 瀏覽:434
命令行執行oracle腳本文件命令行 發布:2025-02-07 10:14:49 瀏覽:96
ibook安卓怎麼下 發布:2025-02-07 10:12:13 瀏覽:693