我有一个从工作脚本复制的简单shell脚本.如果我将其复制粘贴到终端,它可以工作:
if true
then
true
fi
Run Code Online (Sandbox Code Playgroud)
但是,当我运行脚本时bash myscript,我会收到各种语法错误,就好像缺少某些关键字一样.
myscript: line 4: syntax error near unexpected token `fi' 好像then不在那里.myscript: line 6: syntax error: unexpected end of file好像fi不在那里.myscript: line 4: syntax error near unexpected token `$'\r' .. 什么?为什么会在这个特定的脚本中发生这种情况,而不是在我的命令行或我复制的脚本中?
无法加载泡菜文件。我正在使用 python 3.5
import pickle
data=pickle.load(open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "r"))
Run Code Online (Sandbox Code Playgroud)
类型错误:需要类似字节的对象,而不是“str”
. .
还试过:
import pickle
data=pickle.load(open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "rb"))
Run Code Online (Sandbox Code Playgroud)
UnpicklingError:必须引用 STRING 操作码参数
. .
即使使用 with 语句也会出现同样的错误
import pickle
with open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "rb") as f:
enron_data = pickle.load(f)
Run Code Online (Sandbox Code Playgroud) 我正在尝试读取 2000 万行文件并更正从 Windows 到 Mac 的行结尾。我知道它可以在 sed 中完成,但 sed 给了我一个我不知道如何修复的错误(dos2unix:在第 625060 行找到二进制符号 0x0008)。所以我正在尝试在 NodeJS 中解决这个问题。这是我的代码:
var fs = require('fs');
var eol = require('eol');
//read file
var input = fs.readFileSync(process.argv[2], 'utf8');
//fix lines
output = eol.auto(input);
console.log("Lines Fixed! Now Writing....")
//write file
fs.writeFile(process.argv[2] + '_fixed.txt', output, function (err) {
if (err) return console.log(err);
});
console.log("Done!")
Run Code Online (Sandbox Code Playgroud)
问题是文件太大,我收到此错误 buffer.js:513 throw new Error('"toString()" failed');
当我构建 shell 脚本时出现以下错误,因为我是 CentOS 新手,无法找出原因,任何人都可以帮助我解决这个问题吗?
我想我们需要在执行时传递命令行参数,但不确定这里必须传递什么参数。
Shell 脚本:
#!/bin/sh
# Default place to look for apr source. Can be overridden with
# --with-apr=[directory]
apr_src_dir=../apr
while test $# -gt 0
do
# Normalize
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case "$1" in
--with-apr=*)
apr_src_dir=$optarg
;;
esac
shift
done
if test -d "$apr_src_dir"
then
echo ""
echo "Looking for apr source in $apr_src_dir"
else
echo ""
echo "Problem finding apr source in $apr_src_dir."
echo …Run Code Online (Sandbox Code Playgroud) 我需要将 tomcat 进程更改为由非 root 用户执行。创建用户tomcat并将其放入tomcat_group组中。更改了权限。然后更改init.d中的启动脚本。
我以 root 用户身份运行的旧脚本是
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.6.0_31
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.26
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
作为 root 用户,这运行良好。
新脚本是这样的
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.6.0_31
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export …Run Code Online (Sandbox Code Playgroud) 当我使用Sublime Text 2(例如.css或.php文件)通过FTP打开某些文件时,ST2会在每行后添加额外的换行符.结果是大量不必要的空白区域使文件难以扫描并再次清理.
有人可以告诉我如何将首选项设置为打开文件时没有添加额外换行符的位置吗?
非常感激.
我有2个脚本:
/home/bin/test.sh
#!/bin/bash
. /home/bin/test_functions.sh
test
Run Code Online (Sandbox Code Playgroud)
/home/bin/test_functions.sh
#!/bin/sh
test()
{
echo "this is a test"
}
Run Code Online (Sandbox Code Playgroud)
我想从外部脚本调用该函数并在主脚本中执行它.然而,我一直在收到这些错误:
'home/bin/test_functions.sh: line 2: syntax error near unexpected token `
'home/bin/test_functions.sh: line 2: `test()
Run Code Online (Sandbox Code Playgroud)
我正在做什么可能有什么问题?
我正在制作一个bash脚本.我必须得到3个变量
VAR1=$(cat /path to my file/ | grep "string1" | awk '{ print $2 }'
VAR2=$(cat /path to my file/ | grep "string2" | awk '{ print $2 }'
VAR3=$(cat /path to my file/ | grep "string3" | awk '{ print $4 }'
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我写
echo $VAR1
echo $VAR2
echo $VAR3
Run Code Online (Sandbox Code Playgroud)
我可以正确看到价值观
但是当我尝试将它们写成这样的一行时
echo "VAR1: $VAR1 VAR2: $VAR2 VAR3: $VAR3"
Run Code Online (Sandbox Code Playgroud)
值来自$VAR3写入输出的开头,覆盖$VAR1和的值$VAR2
我希望我的解释很明确.有任何疑问请告诉我
感谢致敬.
兰伯特
我想将数字/数字字符串从行前移到行尾,输入示例:
123example
321example
34292example
Run Code Online (Sandbox Code Playgroud)
预期产量:
example123
example321
example34292
Run Code Online (Sandbox Code Playgroud) 基于马特对这里提出的问题的回答:
我试过下面的脚本
use sample
db.testCollection.insert({"result":1})
Run Code Online (Sandbox Code Playgroud)
但是,当我按照建议运行时,出现如下错误,并且记录被插入到默认数据库的集合中,而不是按预期插入“示例”数据库中。
[tmp]# mongo < output.js
connecting to: mongodb://127.0.0.1:27017
2018-03-21T14:54:52.713+0530 E QUERY [thread1] SyntaxError: unterminated string literal @(shellhelp2):1:21
WriteResult({ "nInserted" : 1 })
bye
Run Code Online (Sandbox Code Playgroud)
请寻求帮助。
我正在构建一个C automake项目。运行“ aclocal”显示以下错误。
$ aclocal
' is already registered with AC_CONFIG_FILES./usr/src/ports/autoconf2.5/autoconf2.5-2.69-3.noarch/src/autoconf-2.69/lib/autoconf/status.m4:288: AC_CONFIG_FILES is
expanded from...
configure.ac:890: the top level
autom4te-2.69: /usr/bin/m4 failed with exit status: 1
aclocal-1.15: error: echo failed with exit status: 1
Run Code Online (Sandbox Code Playgroud)
我在Windows 10上使用Cygwin。
从886行到结尾,configure.ac具有以下内容。
# ----------------------------------------------------------------------
# Create output files
#
echo $SLIM_VERSION > VERSION
AC_OUTPUT(Makefile \
src/Makefile \
src/genconfig \
src/verifier/Makefile \
src/utility/Makefile \
src/test/Makefile \
lib/Makefile \
ext/Makefile \
test/Makefile \
test/system_check/Makefile \
third_party/Makefile \
third_party/zdelta-2.1/Makefile \
third_party/google-perftools-1.8.3/Makefile \
third_party/google-perftools-1.8.3/src/google/tcmalloc.h \
third_party/google-perftools-1.8.3/src/windows/google/tcmalloc.h \
doc/Makefile \ …Run Code Online (Sandbox Code Playgroud)