Поместите его в двойные кавычки и избегайте символа $
, чтобы избежать специальной интерпретации из shell
,
ldapadd -H ldap://localhost -x -w "\$Something18\$" -D "dn=cn=Admin" -f /tmp/file.ldif
(или) [ более рекомендуется ]
Включите его в одну кавычку, чтобы оболочка рассматривала его как литеральную строку без ее расширения,
ldapadd -H ldap://localhost -x -w '$Something18$' -D "dn=cn=Admin" -f /tmp/file.ldif
На странице man bash
,
Прикрепленные символы в двойных кавычках сохраняют буквальное значение всех символов в кавычках , за исключением $,, \, и, когда расширение истории включено,!. Символы $ и сохраняют свое особое значение в двойных кавычках. Обратная косая черта сохраняет свое особое значение только тогда, когда за ней следует один из следующих символов: $, `, ', \ или. Двойная кавычка может быть заключена в двойные кавычки, предшествуя ей обратным слэшем. Если включено, будет выполнено расширение истории если в двойных кавычках не будет выведена, а обратная косая черта, предшествующая символу!, не будет удалена.
blockquote>
Этот способ App.updateUser(json);
работает только тогда, когда ваш метод статичен, а в статическом методе у вас нет доступа к this
, есть способы добиться этого:
вы можете использовать свою функцию входа в систему внутри компонента приложения, например:
class App extends Component {
state = {
user: [],
};
login = (username, password) => {
return fetch(loginUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({username, password})
}).then(response => response.json()).then(data=> {
this.setState({user: data});
});
};
componentDidMount(data){
this.login('username', 'password');
};
render() {
return (
<Router>
<Nav/>
<Route exact path="/" component={Login}/>
<Route exact path="/home" render={(props) => (
<Home {...props} picArray={this.state.picArray}/>
)}/>
<Route exact path="/profile" component={Profile}/>
<Route exact path="/single/:id" component={Single}/>
</Router>
);
}
}
export default App;
, а также вы можете упростить метод входа в систему с помощью Async / await, например:
login = async (username, password) => {
const response = await fetch(loginUrl,
{ method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({username, password})
});
const user = await response.json();
this.setState({ user });
};
и вы также можете сделать это:
import { login } from 'MediaAPI.js';
class App extends Component {
state = {
user: [],
};
async componentDidMount(data){
const user = await login('username', 'password');
this.setState({ user });
};
render() {
return (
<Router>
<Nav/>
<Route exact path="/" component={Login}/>
<Route exact path="/home" render={(props) => (
<Home {...props} picArray={this.state.picArray}/>
)}/>
<Route exact path="/profile" component={Profile}/>
<Route exact path="/single/:id" component={Single}/>
</Router>
);
}
}
export default App;
MediaAPI.js
export const login = (username, password) => {
return fetch(loginUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({username, password})
}).then(response => response.json());
};
вы можете создать компонент и в этом компоненте использовать App и установить для него ref, а затем использовать метод updateUser
.
---- есть и другие способы, но я думаю, что эти два лучше.