【发布时间】:2012-10-11 03:36:24
【问题描述】:
我是 shell 编程的新手。我打算在提取 zip 文件后获取目录名称。它的打印语句是
$test.sh helloworld.zip
helloworld
我们来看看test.sh:
#! /bin/sh
length=echo `expr index "$1" .zip`
a=$1
echo $(a:0:length}
但是我从编译器中得到了错误的替换错误。
当我提到“shell”时。我只是在谈论 shell,因为我不知道 bash 或其他之间的区别。我只是使用 Ubuntu 10.04 并使用终端。 (我正在使用 bash。)
【问题讨论】:
-
你对脚本的参数是什么,即 $1 的值?请将此信息编辑到您上面的消息中,而不是作为对我的评论的回复。尝试在 dbl-quotes 中包含对 $1 的所有引用,即
echo "$1"等。祝你好运! -
你用
${a:0}表达了什么? -
尝试将第一行更改为
#!/bin/bash。祝你好运。 -
哇,添加#! /bin/bash 有效。为什么?使用 #! 有什么区别? /bin/bash 和 #! /bin/sh
-
它们是实现不同功能的不同外壳。即使
/bin/sh是 bash,它也会像使用--posix一样执行,这会禁用一些 bash 功能。
标签: string shell substitution