根据Mozilla文档,这里是如何在for of循环中使用解构:
var people = [
{
name: 'Mike Smith',
family: {
mother: 'Jane Smith',
father: 'Harry Smith',
sister: 'Samantha Smith'
},
age: 35
},
{
name: 'Tom Jones',
family: {
mother: 'Norah Jones',
father: 'Richard Jones',
brother: 'Howard Jones'
},
age: 25
}
];
for (var {name: n, family: {father: f}} of people) {
console.log('Name: ' + n + ', Father: ' + f);
}
// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom …Run Code Online (Sandbox Code Playgroud) 所以我的第一个问题是我在 GoDaddy 上托管。
第二个问题是,当我尝试通过 SSH 执行以下 PHP 脚本时...
./searchreplacedb2cli.php -h hostname -u username -d databasename -p 'password'
Run Code Online (Sandbox Code Playgroud)
...我得到一个/usr/bin/php: bad interpreter: No such file or directory错误。这是因为在共享主机上,没有/usr/bin/php. 相反,我想要的 php cli 位于此处:
/usr/local/php5_3/bin/php
Run Code Online (Sandbox Code Playgroud)
因此,我手动将脚本中的 shebang 声明更改为...
#!/usr/local/php5_3/bin/php -q
Run Code Online (Sandbox Code Playgroud)
...果然,它有效。
但是,我不想手动编辑此脚本。我正在寻找一种以编程方式规避此问题的方法。我使用此脚本即时部署 Wordpress 站点。wget每次使用它时,我都会从 git 存储库中获取它。此外,它会定期从 bash 脚本中删除和安装,因此不能每次都在文本编辑器中修改它。
有没有办法将备用解释器传递给 bash 命令?比如,“如果你没有找到默认的解释器,就用这个代替”。
我试过这个,但它不起作用:
./searchreplacedb2cli.php -h hostname -u username -d databasename -p 'password' | /usr/local/php5_3/bin/php
Run Code Online (Sandbox Code Playgroud)
而且因为它是共享主机,所以我没有将 /usr/bin/php 符号链接到正确位置的权限。
我的下一个想法是通过 bash 使用sed替换命令编辑 php 脚本的第 1 行。我想我会先在这里询问替代方案。谢谢。
我刚刚从beta(v0.9.1)更新到v1.0.0,并遇到了一些初始化问题。根据迁移指南,functions.config().firebase现在已弃用。这是我之前的初始化:
const serviceAccount = require('../service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: functions.config().firebase.databaseURL,
storageBucket: functions.config().firebase.storageBucket,
projectId: functions.config().firebase.projectId,
})
Run Code Online (Sandbox Code Playgroud)
升级后,我将其更改为以下内容:
admin.initializeApp()
Run Code Online (Sandbox Code Playgroud)
起初,这似乎工作正常,可以识别databaseURL和storageBucket。但是,关于新缺席的credential领域存在问题。要访问Google Cloud Storage,必须填写该字段。我@google-cloud/storage像这样访问我的应用程序中的API:
import { Bucket, File } from '@google-cloud/storage'
import * as admin from 'firebase-admin'
bucket: Bucket = admin.storage().bucket()
this.bucket
.upload(filepath, {
destination: uploadPath,
})
.then((fileTuple: [File]) => {
// after uploading, save a reference to the audio file in the DB
fileTuple[0]
.getSignedUrl({ action: 'read', expires: '03-17-2025' })
.then((url: [string]) => {
dbRef.child('audioFiles').push(url[0]) …Run Code Online (Sandbox Code Playgroud) google-cloud-storage firebase google-cloud-functions firebase-admin
这是我想要做的:
cat https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb
Run Code Online (Sandbox Code Playgroud)
这给出了"没有这样的文件或目录"错误,因为cat显然无法通过HTTP获取远程文件.还有另一种方法来实现这一目标吗?
更大的图片
我正在尝试为我的bash脚本编写自动更新功能.它需要确定脚本的本地版本是否与最新的公共版本不同.如果存在差异,则应下载新版本.
我想我可以使用以下方法测试:
diff [local file] [remote file]
diff syncdb https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb
Run Code Online (Sandbox Code Playgroud)
但是这给出了与上面相同的问题:"没有这样的文件或目录".所以我的第二个想法是试试这个:
cat https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb | diff - syncdb
Run Code Online (Sandbox Code Playgroud)
由于此脚本由公共使用,因此它们没有对公共github存储库的SSH访问权限.其次,我不想用来git diff比较文件,因为这需要它们已经git安装,弄乱了正确的文件位置/结构,并且还要求他们克隆了我的仓库,我更愿意避免这些需求.
我知道我可以使用下载原始远程文件curl或wget,然后diff他们,但是这违背检查,看看是否有下载前的任何变化的整个目的.
谢谢阅读!
bash ×2
cat ×1
ecmascript-6 ×1
firebase ×1
javascript ×1
php ×1
shell ×1
ssh ×1
unix ×1
wordpress ×1