linux指令碼輸出兩個數字,按照數字從小到大排序,比如輸入 31,12,輸出結果就是

2021-08-01 07:28:21 字數 3197 閱讀 7603

1樓:匿名使用者

[root@localhost ~]# a=""; \> b=""; \

> tmp=""; \

> read x; \

> a=$; \

> b=$; \

> if [ $a > $b ] ; then \> tmp=$a; \

> a=$b; \

> b=$tmp; \

> fi; \

> echo $a $b

34,12

12 34

[root@localhost ~]#

可以看出我是直接把**粘到終端上執行的,所以每一行後都有分號作語句分隔用,然後又用\斷行,其實上面這麼多行,是在同一行內。

每行前的 > 是bash shell自動給出,因為它知道**還沒輸完。你只要把下面這樣的**複製上去也就可以:

a=""; \

b=""; \

tmp=""; \

read x; \

a=$; \

b=$; \

if [ $a > $b ] ; then \tmp=$a; \

a=$b; \

b=$tmp; \

fi; \

echo $a $b

用history命令可以查詢到我確實就相當於輸入在同一行:

1022 a=""; b=""; tmp=""; read x; a=$; b=$; if [ $a > $b ] ; then tmp=$a; a=$b; b=$tmp; fi; echo $a $b

1023 history

[root@localhost ~]#

2樓:匿名使用者

[root@bogon ~]# echo 31 12 12 2 1 2 | xargs -n1 | sort -n | sed ':a;n;s/\n/,/;ba'

1,2,2,12,12,31

3樓:

先將逗號都替換為換行符,然後用 sort 排序(加 -g 選項),最後再把換行符還原為逗號,這樣就將排序後的結果顯示在一行上。

# echo "31,12" | sed 's/,/\n/g' | sort -g | sed ':a;n;s/\n/,/;ba'

12,31

其實一樓的也是排序,而且是著名的氣泡排序演算法,其思想就是不斷地從前往後(或從後往前)兩兩比較和交換(就是你所說的顛倒順序)。

人家是比較大小後才顛倒順序的,不是上來就直接顛倒一下 ^_^

輸入4個數字,要求按從小到大順序輸出

4樓:子爵先生

#include

using namespace std;

求個shell指令碼 使用者輸入一個數字,判斷該數字大於、小於一個數字,如100。等於時退出該迴圈

5樓:匿名使用者

[lotto@logging ~]$ cat test.sh#!/bin/sh

i=0while [ 1 -gt 0 ]

doecho -e "請輸入數字:"

read num

if [ $num -gt 100 ]

then

echo "大於100"

elif [ $num -lt 100 ]then

echo "小於100"

else

echo "等於100,退出程式"

break

fii=`expr $i + 1`

done

[lotto@logging ~]$ ./test.sh請輸入數字:

4小於100

請輸入數字:

105大於100

請輸入數字:

100等於100,退出程式

[lotto@logging ~]$

6樓:小米飛貓

#!/bin/bash

while true;do

read -p "enter an integer:" numif [ $num -eq 100 ];thenbreak

fidone

exit 0

#因為你沒說大於,小於後做什麼,只說了一個等於100時退出。

#那我只能認為不管我輸入什麼數,還是重複輸入,直到我輸入100時退出。

linux中編寫shell指令碼,輸出如下序列:1,3,2,4,3,5,4,6,···100 。[附圖]

7樓:匿名使用者

指令碼至少有如下錯抄誤:

改為$或$j,是要取值的

bai啊

expr語句du外面是反引號(鍵盤上esc下面那個鍵)zhi而不是單引號,表示執行dao命令而不是單純一個字串,expr後面的運算子左右兩側要有空格。

if跟[之間是要有空格的,if判斷表示式比較符兩側也要有空格,數字跟 [ ]之間要有空格。

我修正了,自己執行成功生成你要的數列了。你自己對比下吧:

#!/bin/bash

#script name prg8.sh

clear

i=1for ((j=1;j<=98;j++))doecho -n "$j,`expr $j + 2`,"

if [ $i -eq 10 ]

then

echo ""

i=1else

i=$((i+1))

fidone

echo ""

註釋裡已經說了,script name prg8.sh,指令碼名叫prg8.sh,當然,叫什麼名字是你的自由。

8樓:匿名使用者

孩子指令碼語言是不需要編譯的,sh 12.c就可以了,還有shell指令碼一般以sh為副檔名,不要用c,也可以chmod +x 12.c 加可執行許可權,./12.c來執行

9樓:匿名使用者

你只是想輸出1~100這100個數字??

直接用迴圈就行了啊

**#!/bin/bash

for (( i=1; i<=100 ; i=i+1 ))doecho "$i"

done

————————————————————

看錯題目了,當我沒答

4位數字中有兩個數字相同另兩個數字不相同,共有多少種可能 首數可為

c 1,10 c 2,9 a 4,4 a 2,2 4320按你說的情況的話兩兩相同應該是c 2,10 a 4,4 a 2,2 a 2,2 270。或者c 2,10 a 2,3 270。看你怎麼理解了。不是你說的540種.加起來就是10000了 c 4,2 c 10,3 720種 解釋 4位中任選兩位...

VB兩個數字比較大小,vb比較兩個數大小

先不管你的txt3是怎麼來的,單就程式而言,txt1比txt2小,所以你的if條件判斷後始終會把txt1的值2傳遞給txt3,於是txt3值一直都是2.txt1 2 txt2 5 這說明你這兩個數是固定的2 5 所以永遠是txt1 txt2 所以永遠是txt3 txt1 2 你的txt3在哪兒定義的...

excel兩個單元格內兩個數字的運算

你這樣用excel是自己給自己找麻煩,估計是初學者吧,excel中一個單元格是一個最基本的單元,也應該只放一個資料。你的描述有問題,excel中豎的叫列,分別為a b c d等,在 的最上面有列標 橫的叫行,分別為1 2 3 4等,在 的最左邊有行號。excel用列標和行號的交叉點來表示一個單元格的...