【问题标题】:create a shell script with a shell script (mac)使用 shell 脚本 (mac) 创建一个 shell 脚本
【发布时间】:2023-05-08 06:16:01
【问题描述】:

我一直在用这种方法创建 mac shell 可执行文件:

  • 创建文件;
  • #!/bin/sh;
  • 添加脚本;
  • 运行chmod 755 nameofscript

我现在需要创建一个 shell 脚本,以便在另一个目录中创建一个 shell 脚本并使其可执行(使用 chmod),以便它可以在启动时运行。

【问题讨论】:

  • 还有什么问题?
  • Don't assume /bin/sh is bash。而且这个做起来很简单,但是感觉很像功课,能把你试过的贴出来吗?
  • 如果您只希望脚本可执行而不更改已定义的读写权限,您可以使用此命令:chmod +x nameofscript

标签: macos bash shell executable


【解决方案1】:
#!/bin/sh

dir=/tmp
fnam=someshellscript

echo '#!/bin/sh' > $dir/$fnam
echo 'find /bin -name "*X*"' >> $dir/$fnam
chmod 755  $dir/$fnam

【讨论】:

  • 行"echo '#!/bin/sh' > $dir/$fnam" 和 "echo 'find /bin -name "X"' > > $dir/$fnam" 做什么?
  • 好的,让我们剖析一下:“echo”是一个命令,它只是将其所有参数写入标准输出,这里是 '#!/bin/sh'(单引号是为了表明 shell字符串的限制,将被消除)。 echo 命令以特殊的字符“>”结尾,表示标准输出的重定向。标准输出转到文件,其名称由其右侧的字符串指示,该文件由 $dir/$fnam 通过将 $dir 替换为 /tmp 并将 $fnam 替换为 someshellscript 构建,导致(注意斜杠)在 /tmp /someshellscript.
  • 对于查找,我推荐使用“man find”,尽管在谷歌上搜索“unix find examples”可能在一开始会更有帮助; find 不直观。 >> 操作符与上面的 > 操作符类似,它将标准输出重定向到文件;但它是追加而不是创建一个新的(就像 > 会做的那样),这是我们在这里想要做的:逐行写入我们的 shell 脚本。最后的 chmod 应该看起来很熟悉;-)。我认为您缺少的是与输出重定向相结合的简单“回声”。剩下的就跟在终端上手动输入的命令一样。
  • 感谢您的建议,但我现在明白了,我什至不需要制作新脚本。为死灵法道歉。虽然这可能有很好的记录,但“a p”的答案更短,初学者也不会感到困惑。
【解决方案2】:
#!/bin/sh
echo "script goes here!" > /path/to/place
chmod 755 /path/to/place

【讨论】:

    相关资源