我知道这很有可能成为重复,但在这里没有其他问题我找到了我的问题的答案。以下是我已经尝试过的摘要。
我有一个R脚本文件file.r
:
#!/usr/bin/env Rscript
print("Hello World!")
是可执行的(chmod +x file.r
),并且曾经通过发布以下内容(上次我使用它大约一个月前)运行:
$ ./file.r
然而,今天:
$ ./file.r
/usr/bin/env: 'Rscript\r': No such file or directory
事实上:
$ which Rscript
/usr/bin/Rscript
因此我将shebang改为:#!/usr/bin Rscript
,但是:
$ ./file.r
/usr/bin: bad interpreter: Permission denied
然后我想我会以超级用户身份运行它,但是:
$ sudo ./file.r
sudo: unable to execute ./file.r: Permission denied
阅读我发现R的全新安装将解决我的问题,所以我卸载并安装了R.不幸的是我之前写的仍然适用。但请注意,以下适用于shebang版本:
$ Rscript file.r
[1] "Hello World!"
我做错了什么?
答案 0 :(得分:9)
啊,它的回车(\ r)问题,它被添加到第一行,如果你使用的是vi编辑器, $searchTerm = "Adam Pratt";
return User::select(User::table().'.*'))
->where(function($query) use ($searchTerm){
$query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%".$searchTerm."%'");
})
->orLike(User::table().'.email',$searchTerm)
->orderBy('first_name', 'asc')
->orderBy('last_name', 'asc')
->get();
会显示它。行结尾将显示为$和回车字符为^ M。
:set list
顺便说一句,您可以通过进入insert(i)/ Append(a)模式并在ctrl + v然后按ctrl + m
进入vi答案 1 :(得分:2)
如果你想直接指向可执行文件,那么你需要shebang之后的完整路径(没有空格):
#!/usr/bin/Rscript
正如Ravi指出的那样,如果这个修复工作不起作用,那么解决方案可能只涉及删除换行符并再次将其放入。
我不是env
解决方法的粉丝,因为它会使线条更容易混淆,而且大多数人都没有意识到它实际上正在调用另一个程序(即env
)在修改后的shell中运行代码。有关here的更多信息。
答案 2 :(得分:0)
我找到的最佳答案在这里:env: python\r: No such file or directory
Open the file in vim or vi, and administer the following command:
:set ff=unix
Save and exit:
:wq
Done!