酷!學園

技術討論區 => 程式討論版 => 主題作者是: terayon 於 2006-04-03 15:02

主題: 請教shell script Hex轉Charater
作者: terayon2006-04-03 15:02
61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E 33 2E 31 30 30 5D
轉成
a  a  l  n  / 1  @  [  1   0  .  3  .  3  .  1  0  0  ]
要用什麼指令程式轉
主題: 請教shell script Hex轉Charater
作者: netman2006-04-03 15:18
for i in 61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E 33 2E 31 30 30 5D
do
    echo -e "\\x$i"
done | xargs
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-13 13:29
for i in 61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E 33 2E 31 30 30 5D
do
    echo -e "\\x$i"
done | xargs
對不起...我是菜鳥...我想問類似的問題...
我使用上例在我的 Embedded system 上執行...卻顯示: xargs: not found
請問 xargs 放在哪邊啊? /bin 及 /sbin 裡都找不到 (但在虛擬 CentOS 上可正常執行)... :-[
我的問題如下:
1)如果上例不使用 xargs 指令...如何達到相同結果?
2)我的字串如果是連續的...如: 4142434445 如何轉碼成: ABCDE ?
3)如何反轉回來?...如: ABCDE 轉回 4142434445 ?
以上問題不是沒做功課...而是網路上相關討論實在太少...煩請 netman 博士指點...感恩... :-*
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-13 14:48
1)
代碼: [選擇]
for i in 61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E do     echo -en "\\x$i"; done ; echo

2)
代碼: [選擇]
str="4142434445"
for ((i=0;i<=${#str}-2;i+=2)); do echo -en "\\x${str:$i:2}"; done; echo

3)
代碼: [選擇]
str="ABCD"
for ((i=0;i<=${#str}-1;i++)); do code=$(echo "${str:$i:1}"| od -x); echo -n "${code:10:2}"; done; echo
不過,需要裝 od 哦...
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-13 15:55
1)
代碼: [選擇]
for i in 61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E do     echo -en "\\x$i"; done ; echo

2)
代碼: [選擇]
str="4142434445"
for ((i=0;i<=${#str}-2;i+=2)); do echo -en "\\x${str:$i:2}"; done; echo

3)
str="ABCD"
for ((i=0;i<=${#str}-1;i++)); do code=$(echo "${str:$i:1} echo -n "${code:10:2}"; done; echo
不過,需要裝 od 哦...
非常感謝!!... :D
1) 2) 可正常執行...其結果也正確... :D
3) 似乎少了括號及引號? 顯示: Syntax error: Bad for loop variable
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-13 17:43
1)
代碼: [選擇]
for i in 61 61 6C 6E 2F 31 40 5B 31 30 2E 33 2E do     echo -en "\\x$i"; done ; echo

2)
代碼: [選擇]
str="4142434445"
for ((i=0;i<=${#str}-2;i+=2)); do echo -en "\\x${str:$i:2}"; done; echo

3)
str="ABCD"
for ((i=0;i<=${#str}-1;i++)); do code=$(echo "${str:$i:1} echo -n "${code:10:2}"; done; echo
不過,需要裝 od 哦...
奇怪了...程式移植到 Embedded system 上卻都不行了...顯示: Syntax error: Bad for loop variable
是否是因為大大所說沒裝 od 的關係?
(/bin 裡有 awk cut expr fgrep grep sed tail vi wc 但沒有 tr 跟 od  :'( )
若無法安裝 od 還有其他方法嗎?...感謝... :)
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-13 18:23
自己 copy 一個 od 跟相關 libs 過去啊...

^_^
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-13 18:44
自己 copy 一個 od 跟相關 libs 過去啊...

^_^
我想辦法安裝 od 好了... :-\
可第三項語法有錯誤...
我嘗試修改好...但卻輸出為空...
大大再幫忙看一下好嗎... :)
主題: 回覆: 請教shell script Hex轉Charater
作者: gwstudy2010-09-13 18:58
netman 辛苦了 :)
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-13 20:23
sorry, 改好了...
主題: 回覆: 請教shell script Hex轉Charater
作者: elleryq2010-09-14 09:19
你 embedded system 上的 shell 是 bash 嗎??
建議提供一下版本資訊,也比較好幫忙。

你的問題也許只要 cross-compile 或是在 build busybox 的時候把缺少的程式勾選起來再安裝即可。
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-14 10:16
sorry, 改好了...

全部在SentOS上驗證無誤...非常感謝!!... ;D
但移植到目標板上依然是: Syntax error: Bad for loop variable
這個問題...對菜鳥的我來說...是一個頭兩個大... :-[
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-14 10:20
你 embedded system 上的 shell 是 bash 嗎??
建議提供一下版本資訊,也比較好幫忙。

你的問題也許只要 cross-compile 或是在 build busybox 的時候把缺少的程式勾選起來再安裝即可。
版本: BusyBox v1.2.0 (2010.09.06-13:46+0000) Built-in shell (ash)
od 是可執行檔?...還是只是 BusyBox 的命令選項?...
這部份有得忙了...謝謝您... ;)
主題: 回覆: 請教shell script Hex轉Charater
作者: elleryq2010-09-14 16:32
就打 busybox od --help 試試看,就知道有沒有了

有的話,假設你的 busybox 放在 /bin
你就用 ln -s /bin/busybox /bin/od
這樣就會有 od 這指令了。
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-14 16:59
就打 busybox od --help 試試看,就知道有沒有了

有的話,假設你的 busybox 放在 /bin
你就用 ln -s /bin/busybox /bin/od
這樣就會有 od 這指令了。

多謝...已經重 Build 並加入 od, tr, printf, xargs... 等指令...
結果發現我的 Embedded system 根本不支援 echo ${ : : } 這樣的語法...
請問該當何解...謝謝!!
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-14 17:02
sorry, 改好了...

netman 大大網安...已經重 Build 並加入 od, tr, printf, xargs... 等指令...
結果發現我的 Embedded system 根本不支援 echo ${ : : } 這樣的語法...
請問該當何解...謝謝!!
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-14 23:10
那你再把  /bin/echo 也 build 進去...
然後每次 echo 都用絕對路徑看看 ? 

^_^
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-15 13:23
那你再把  /bin/echo 也 build 進去...
然後每次 echo 都用絕對路徑看看 ? 

^_^
抱歉...還在解其他問題...所以回應慢了些... :P

試過...情況一樣...

我認為應該是語法的解析問題...
我在我的 Embedded System 上測試:

# str=5a
# echo -e \\x${str}
Z
# echo -e \\x${str:0:2}
-sh: Syntax error: Bad substitution
#

{ : : } 的取字元語法是不支援的... :-[

有其他替代的取字元語法嗎?... ???
謝謝!!
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-15 14:39
啊,抱歉,頭昏了...

那個跟 echo 沒關,害你浪費不少時間了...
那個是跟 shell 有關,如果你有 bash shell,就沒問題。
要不然,
用 cut 等命令來處理也行....
用 for 迴圈也 OK

不過,你先自己想想先... ^_^
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-15 15:27
啊,抱歉,頭昏了...

那個跟 echo 沒關,害你浪費不少時間了...
那個是跟 shell 有關,如果你有 bash shell,就沒問題。
要不然,
用 cut 等命令來處理也行....
用 for 迴圈也 OK

不過,你先自己想想先... ^_^

目前有關 shell 的設定如下:

#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_LASH is not set
# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y

#
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
# CONFIG_ASH_READ_NCHARS is not set
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_TEST=y
CONFIG_ASH_CMDCMD=y
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
# CONFIG_ASH_RANDOM_SUPPORT is not set
# CONFIG_ASH_EXPAND_PRMT is not set
# CONFIG_HUSH is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set

#
# Bourne Shell Options
#
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
CONFIG_FEATURE_SH_STANDALONE_SHELL=y
CONFIG_FEATURE_COMMAND_EDITING=y
# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
CONFIG_FEATURE_COMMAND_HISTORY=15
# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
# CONFIG_FEATURE_SH_FANCY_PROMPT is not set

煩請建議哪些應該打開才能支援該語法?...謝謝!!... :)
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-15 18:57
啊,抱歉,頭昏了...

那個跟 echo 沒關,害你浪費不少時間了...
那個是跟 shell 有關,如果你有 bash shell,就沒問題。
要不然,
用 cut 等命令來處理也行....
用 for 迴圈也 OK

不過,你先自己想想先... ^_^

想破頭...想不出來... :'(
連 for 迴圈也不支援 ((  )) 語法!!

在 Embedded System 上

# for ((i=0;i<=10;i++)); do echo $i; done
-sh: Syntax error: Bad for loop variable
#

在 CentOS 上 :

[root@localhost ~]# for ((i=0;i<=10;i++)); do echo $i; done
0
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]#


山窮水盡了...老大...救命啊~~~... :'( :'( :'(
主題: 回覆: 請教shell script Hex轉Charater
作者: netman2010-09-15 20:28
ash 的功能比較少,要換成 bash 才比較多東西可以玩哦...

下面是一個搭陪 expr 的例子:
代碼: [選擇]
str="ABCD"
 n=1
m=`expr length $str`
while [ $n -le $m ]; do echo $str | cut -c $n; n=`expr $n + 1`; done
主題: 回覆: 請教shell script Hex轉Charater
作者: dark2010-09-16 03:08
read 是 bash 內建的 , 其他 shell 不知有沒有?

試試 read -n2 word  能不能解決

echo 4142434445 | while read -n2 word ;do echo -en "\\x$word"; done

主題: 回覆: 請教shell script Hex轉Charater
作者: elleryq2010-09-16 09:44
我已經想直接用 C 來寫了說... :P

可以用 awk 嗎?
busybox 也有內建 mawk
寫起來應該比 ash 提供的東西要多...
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-16 14:48
ash 的功能比較少,要換成 bash 才比較多東西可以玩哦...

下面是一個搭陪 expr 的例子:
代碼: [選擇]
str="ABCD"
 n=1
m=`expr length $str`
while [ $n -le $m ]; do echo $str | cut -c $n; n=`expr $n + 1`; done

大大果然那裏就是大...擠一擠總是會出來... ;D
迴圈修改如下:
while [ $n -le ${#str} ]; do echo -n $(echo $(echo $str | cut -c $n | od -x) | cut -c11-12); n=`expr $n + 1`; done
雖怪怪的...但可以用啦!
有感謝!!!... :-*
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-16 14:55
read 是 bash 內建的 , 其他 shell 不知有沒有?

試試 read -n2 word  能不能解決

echo 4142434445 | while read -n2 word ;do echo -en "\\x$word"; done


剛好跟 netman 大大湊一對... ;D
修改如下:
echo $str | while read -n2 word; do echo -en "\\x$word"
done | sed s/\\\\x// > outputfile
也是怪怪的...但也是可以用啦!
一樣有感謝!!! :-*
主題: 回覆: 請教shell script Hex轉Charater
作者: hsw002010-09-16 14:58
我已經想直接用 C 來寫了說... :P

可以用 awk 嗎?
busybox 也有內建 mawk
寫起來應該比 ash 提供的東西要多...

嘿啊...能用 C 寫...
我還需搞到現在嗎?... :P 8) ;D