【问题标题】:bash passing arguments invalid (adb)bash 传递参数无效(adb)
【发布时间】:2012-06-12 00:22:17
【问题描述】:

对不起我的英语。 我写 bash 文件,它使用变量:shared_var=/system/xbin

我的脚本文件:

exec="./adb shell chmod 644 $shared_var/$2"
echo $exec
$exec

让我们运行这个脚本:

>bash gapp.sh misc su
./adb shell chmod 644 /system/xbin/su
: No such file or directory n/su

让我们在没有脚本的情况下运行字符串“./adb shell chmod 644 /system/xbin/su”:

> ./adb shell chmod 644 /system/xbin/su
(No output, OK)

我有几个问题:

  1. 为什么终端中的脚本和直接输入会有不同的结果?
  2. 为什么 adb 不是“没有这样的文件或目录 /system/xbin/su”而是返回“没有 soch 文件或目录 n/su”(adb 结果看起来失真)
  3. 我的问题有什么解决方案?

【问题讨论】:

标签: android linux bash shell adb


【解决方案1】:

如果你的 shell 脚本只有,它是否有效

echo ./adb shell chmod 644 $shared_var/$2
./adb shell chmod 644 $shared_var/$2

即,不将其分配给另一个变量,并且没有带引号的字符串

另外,如果您在 Windows 中编辑文件,请确保使用 Unix 换行符保存文件。

【讨论】:

  • 它给出相同的结果: echo ./adb shell chmod 644 $shared_var/$2 给出 ./adb shell chmod 644 /system/xbin/su ./adb shell chmod 644 $shared_var/$2 返回:否这样的文件或目录n/su 但是./adb shell chmod 644 /system/xbin/su 执行成功。我做错了什么?
  • 对不起,我不明白,如何在这个 cmets 中换行 :(
  • 哦!其原因是类似于窗口的行尾。我在 gedit 中将其更改为 UNIX 风格,现在一切正常。对不起:(
  • 啊,是的,当您在 Windows 中创建脚本时,您需要将文件转换为 Unix 换行符,否则它将无法在 unix 中正确运行。 (我主要在 Linux 中工作,但我也遇到过很多次)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2014-07-30
相关资源
最近更新 更多