将chmod和正在运行的脚本组合在一行中不能用于Bash

时间:2016-03-27 05:15:29

标签: bash shell chmod

使用以下创建文件的Bash序列,更改文件权限(可执行)并运行我想要 在一行中完成最后2个命令的脚本

$ touch dotfiles.sh
$ chmod +x ./dotfiles.sh
$ ./dotfiles

解决方案1 ​​

我认为可能的解决方案是使用&& 运算符。因此,只有./dotfiles成功时才会执行chmod

但是这个解决方案不起作用,而bash说文件不存在。有什么想法?。

(不是工作解决方案)

注意:chmod如果成功则返回0。所以&&已完成,但在./dotfiles.sh

时,第二部分失败了
$ chmod +x ./dotfiles.sh && ./dotfiles.sh
-bash: ./dotfiles.sh: No such file or directory
$
  

更新:解决方案1是正确的。请参阅下面的答案以获得完整的解释。

2 个答案:

答案 0 :(得分:1)

更新:

提议的解决方案1实际上正在运作。在阅读用户的评论后,我发现问题可能出在dotfiles.sh内容,而不是我要求的bash命令。

我遇到了什么问题?

在dotfile.sh文件中,我添加了#!/usr/bin/env bash而不是#!/bin/bash。因此,当执行chmod +x ./dotfiles.sh && ./dotfiles.sh "No such file or directory"问题时,指的是./dotfiles.sh内容而不是“命令”本身(我认为)。

答案 1 :(得分:-3)

这应该有用。

sizeof(char)*nbytes